Bootstrap

Codeforces 1385D - a-Good String

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​+1​s2n​+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…sn2s1​s2​…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

InputcopyOutputcopy
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; 
 }

;