题目描述
给定一个长度为 n 的字符串 s,s 仅由单词表中前 k 个单词对应的大写英文字母组成。
举些例子:
- 当 k=3 时,s 仅能由字符 A、B、C 组成;
- 当 k=6 时,s 仅能由字符 A、B、C、D、E、F 组成
你可以替换字符串中的任意一个字符,但是也仅允许使用单词表中前 k 个单词对应的大写英文字母进行替换。
你希望替换掉最少的字符,使得字符串中任意两个相邻的字符不相同。
求:最少需要替换掉几个字符?
输入格式
第一行,两个整数 n 和 k(1≤n≤5⋅105;2≤k≤26)
第二行,一个长度为 n 的字符串 s。s 仅由单词表中前 k 个单词对应的大写英文字母组成。
输出格式
输出一个整数,表示要使字符串 s 中任意两个相邻的字符都不相同所需替换掉的最少单词个数。
6 3
ABBACC
2
3 2
BBB
1
说明/提示
样例解释
样例1:一种最优方案是将 s3 替换为 C,将 s5 替换为 B,则 ABBACC→ABCABC
样例2:一种最优方案是将 s2 替换为 B,则 BBB→BAB
数据规模与约定
- 对于 30% 的数据,n≤10;k≤3
- 对于 60% 的数据,n≤1000;k≤10
- 对于 100% 的数据,1≤n≤105;2≤k≤26,且字符串 s 仅由单词表中前 k 个单词对应的大写英文字母组成