You are given a string s[1…n]s[1…n] consisting of lowercase Latin letters. It is guaranteed that n=2kn=2k for some integer k≥0k≥0.
The string s[1…n]s[1…n] is called cc-good if at least one of the following three conditions is satisfied:
- The length of ss is 11, and it consists of the character cc (i.e. s1=cs1=c);
- The length of ss is greater than 11, the first half of the string consists of only the character cc (i.e. s1=s2=⋯=sn2=cs1=s2=⋯=s2n=c) and the second half of the string (i.e. the string sn2+1sn2+2…sns2n+1s2n+2…sn) is a (c+1)(c+1)-good string;
- The length of ss is greater than 11, the second half of the string consists of only the character cc (i.e. sn2+1=sn2+2=⋯=sn=cs2n+1=s2n+2=⋯=sn=c) and the first half of the string (i.e. the string s1s2…sn2s1s2…s2n) is a (c+1)(c+1)-good string.
For example: "aabc" is 'a'-good, "ffgheeee" is 'e'-good.
In one move, you can choose one index ii from 11 to nn and replace sisi with any lowercase Latin letter (any character from 'a' to 'z').
Your task is to find the minimum number of moves required to obtain an 'a'-good string from ss (i.e. cc-good string for c=c= 'a'). It is guaranteed that the answer always exists.
You have to answer tt independent test cases.
Another example of an 'a'-good string is as follows. Consider the string s=s="cdbbaaaa". It is an 'a'-good string, because:
- the second half of the string ("aaaa") consists of only the character 'a';
- the first half of the string ("cdbb") is 'b'-good string, because:
- the second half of the string ("bb") consists of only the character 'b';
- the first half of the string ("cd") is 'c'-good string, because:
- the first half of the string ("c") consists of only the character 'c';
- the second half of the string ("d") is 'd'-good string.
Input
The first line of the input contains one integer tt (1≤t≤2⋅1041≤t≤2⋅104) — the number of test cases. Then tt test cases follow.
The first line of the test case contains one integer nn (1≤n≤131 0721≤n≤131 072) — the length of ss. It is guaranteed that n=2kn=2k for some integer k≥0k≥0. The second line of the test case contains the string ss consisting of nn lowercase Latin letters.
It is guaranteed that the sum of nn does not exceed 2⋅1052⋅105 (∑n≤2⋅105∑n≤2⋅105).
Output
For each test case, print the answer — the minimum number of moves required to obtain an 'a'-good string from ss (i.e. cc-good string with c=c= 'a'). It is guaranteed that the answer exists.
Examples
Inputcopy | Outputcopy |
---|---|
6 8 bbdcaaaa 8 asdfghjk 8 ceaaaabb 8 bbaaddcc 1 z 2 ac | 0 7 4 5 1 1 |
#include<bits/stdc++.h>
#define int long long
#define N 1000005
#define INF 0x3f3f3f3f
using namespace std;
int ans=0;
int f(string s,char ch)
{
if(s.size()==1)
return (s[0]==ch)?0:1;
int k=s.size()/2;
string str1=s.substr(0,k);
string str2=s.substr(k);
int ans1=f(str1,ch+1);
int ans2=f(str2,ch+1);
ans1+=k-count(str2.begin(),str2.end(),ch);
ans2+=k-count(str1.begin(),str1.end(),ch);
return min(ans1,ans2);
}
signed main()
{
ios::sync_with_stdio(false);
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
string s;
cin>>s;
int ans=f(s,'a');
}
return 0;
}