CF1238E.Keyboard Purchase
提高+/省选-
通过率:0%
时间限制:1.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You have a password which you often type — a string s of length n. Every character of this string is one of the first m lowercase Latin letters.
Since you spend a lot of time typing it, you want to buy a new keyboard.
A keyboard is a permutation of the first m Latin letters. For example, if m=3, then there are six possible keyboards: abc, acb, bac, bca, cab and cba.
Since you type your password with one finger, you need to spend time moving your finger from one password character to the next. The time to move from character si to character si+1 is equal to the distance between these characters on keyboard. The total time you have to spend typing the password with a keyboard is called the slowness of this keyboard.
More formaly, the slowness of keyboard is equal to i=2∑n∣possi−1−possi∣, where posx is position of letter x in keyboard.
For example, if s is aacabc and the keyboard is bac, then the total time of typing this password is ∣posa−posa∣+∣posa−posc∣+∣posc−posa∣+∣posa−posb∣+∣posb−posc∣ = ∣2−2∣+∣2−3∣+∣3−2∣+∣2−1∣+∣1−3∣ = 0+1+1+1+2=5.
Before buying a new keyboard you want to know the minimum possible slowness that the keyboard can have.
你有一个经常输入的密码——一个长度为 n 的字符串 s。该字符串的每个字符都是前 m 个小写拉丁字母之一。
由于你花费大量时间输入该密码,因此你想购买一个新的键盘。
键盘是前 m 个小写拉丁字母的一个排列。例如,若 m=3,则共有六种可能的键盘:abc、acb、bac、bca、cab 和 cba。
由于你仅用一根手指输入密码,因此需要花费时间将手指从一个密码字符移动到下一个字符。从字符 si 移动到字符 si+1 所需的时间等于这两个字符在键盘上的位置距离。使用某个键盘输入该密码所需的总时间称为该键盘的迟滞度(slowness)。
更形式化地,键盘的迟滞度定义为 i=2∑n∣possi−1−possi∣,其中 posx 表示字母 x 在键盘中的位置(从 1 开始计数)。
例如,若 s=aacabc,键盘为 bac,则输入该密码的总时间为
∣posa−posa∣+∣posa−posc∣+∣posc−posa∣+∣posa−posb∣+∣posb−posc∣
=∣2−2∣+∣2−3∣+∣3−2∣+∣2−1∣+∣1−3∣
=0+1+1+1+2=5。
在购买新键盘之前,你想知道键盘所能达到的最小可能迟滞度。
输入格式
The first line contains two integers n and m (1≤n≤105,1≤m≤20).
The second line contains the string s consisting of n characters. Each character is one of the first m Latin letters (lowercase).
第一行包含两个整数 n 和 m(1≤n≤105,1≤m≤20)。
第二行包含一个长度为 n 的字符串 s。其中每个字符均为前 m 个小写拉丁字母之一。
输出格式
Print one integer – the minimum slowness a keyboard can have.
输出一个整数——键盘可能具有的最小迟钝度。
输入输出样例
输入#1
6 3 aacabc
输出#1
5
输入#2
6 4 aaaaaa
输出#2
0
输入#3
15 4 abacabadabacaba
输出#3
16
说明/提示
The first test case is considered in the statement.
In the second test case the slowness of any keyboard is 0.
In the third test case one of the most suitable keyboards is bacd.
第一个测试用例已在题目描述中给出。
第二个测试用例中,任意键盘的迟滞度均为 0。
第三个测试用例中,一个最合适的键盘是 bacd。
输入解题思路,AI测评打分。不知道怎么写?