#176. [CF1385D] a-Good String
[CF1385D] a-Good String
题目描述
给定一个由小写拉丁字母组成的字符串 。保证 ,其中 。
如果字符串 满足以下三个条件之一,则称其为 -good 字符串:
- 的长度为 ,且唯一的字符为 (即 );
- 的长度大于 ,且前一半全为字符 (即 ),并且后一半(即 )是 -good 字符串;
- 的长度大于 ,且后一半全为字符 (即 $s_{\frac{n}{2} + 1} = s_{\frac{n}{2} + 2} = \dots = s_n = c$),并且前一半(即 )是 -good 字符串。
例如:"aabc" 是 'a'-good 字符串,"ffgheeee" 是 'e'-good 字符串。
每次操作,你可以选择一个下标 (),将 替换为任意一个小写拉丁字母('a' 到 'z' 之间的任意字符)。
你的任务是,求将 变为 'a'-good 字符串(即 -good 字符串, 'a')所需的最少操作次数。保证一定存在解。
你需要回答 组独立的测试用例。
另一个 'a'-good 字符串的例子如下。考虑字符串 "cdbbaaaa"。它是一个 'a'-good 字符串,因为:
- 字符串的后一半 "aaaa" 全为字符 'a';
- 前一半 "cdbb" 是 'b'-good 字符串,因为:
- 后一半 "bb" 全为字符 'b';
- 前一半 "cd" 是 'c'-good 字符串,因为:
- 前一半 "c" 全为字符 'c';
- 后一半 "d" 是 'd'-good 字符串。
输入格式
输入的第一行为一个整数 (),表示测试用例的数量。接下来有 组测试用例。
每组测试用例的第一行为一个整数 (),表示字符串 的长度。保证 ,其中 。第二行为一个长度为 的字符串 ,由小写拉丁字母组成。
保证所有测试用例中 的总和不超过 ()。
输出格式
对于每组测试用例,输出一个整数,表示将 变为 'a'-good 字符串所需的最少操作次数。保证一定存在解。
输入输出样例 #1
6
8
bbdcaaaa
8
asdfghjk
8
ceaaaabb
8
bbaaddcc
1
z
2
ac
0
7
4
5
1
1