#L0019. 相邻互不相同

相邻互不相同

题目描述

小杨拿到了一个长度为 nn、只含小写字母的字符串 ss。每次操作,他可以选一个位置 xx1xn1 \le x \le n)和一个小写字母 cc,把 sxs_x 改为 cc

他需要进行若干次操作,使得操作结束后,字符串中任意相邻的 kk 个字符都互不相同(即任意长度为 kk 的连续子串中,kk 个字符两两不同)。

请你计算最少需要进行多少次操作。

输入格式

第一行一个整数 tt,表示测试数据组数。

接下来 tt 组测试数据,对于每组:

  • 第一行两个整数 n,kn, k,分别表示字符串长度和窗口长度;
  • 第二行一个长度为 nn 的字符串 ss,只含小写字母。

输出格式

对于每组测试数据,输出一行一个整数,表示最少的操作次数。

样例

3
6 3
abaaba
5 2
hooch
8 3
cherykid
2
1
0

样例解释

第一组中,abaaba 的第 3366 个字符 a 都与前面 k1=2k-1=2 个字符中的某个重复,分别改成 c 后得到 abcabc,此后任意相邻 33 个字符都互不相同,共 22 次操作。

第二组中,k=2k=2hooch 里两个相邻的 o 重复,改掉其中一个即可,需要 11 次操作。

第三组中,cherykid 已经满足任意相邻 33 个字符互不相同,不需要操作。

数据范围与约定

子任务 分值 限制
11 77 k=2k = 2
22 n1000n \leq 1000
33 1111 无特殊限制

对于 100%100\% 的数据,1t1051 \le t \le 10^5n106\sum n \le 10^61k131 \le k \le 13ss 中只含小写字母。