Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define ll long long
- #define pb push_back
- #define MOD1 1000000007
- #define MOD2 998244353
- #define NO cout << "NO" << endl
- #define YES cout << "YES" << endl
- ll expo(ll a, ll b, ll mod) {ll res = 1; while (b > 0) {if (b & 1)res = (res * a) % mod; a = (a * a) % mod; b = b >> 1;} return res;}
- ll mminvprime(ll a, ll b) {return expo(a, b - 2, b);}
- ll mod_add(ll a, ll b, ll m) {a = a % m; b = b % m; return (((a + b) % m) + m) % m;}
- ll mod_mul(ll a, ll b, ll m) {a = a % m; b = b % m; return (((a * b) % m) + m) % m;}
- ll mod_sub(ll a, ll b, ll m) {a = a % m; b = b % m; return (((a - b) % m) + m) % m;}
- ll mod_div(ll a, ll b, ll m) {a = a % m; b = b % m; return (mod_mul(a, mminvprime(b, m), m) + m) % m;}
- void print(vector<int> &ans){for(auto x: ans) cout<<x<<" "; cout<<endl;}
- // ========================================================================
- void solve()
- {
- int n;string s;
- cin>>n;
- cin>>s;
- if(n%2!=0)
- {
- cout<<-1<<endl;
- return;
- }
- vector<int> hm(26,0);
- vector<int> rep(26,0);
- for(int i=0;i<n;i++)
- {
- hm[s[i]-'a']+=1;
- if(hm[s[i]-'a']>n/2)
- {
- cout<<-1<<endl;
- return;
- }
- }
- for(int i=0;i<int(n/2);i++)
- {
- if(s[i] == s[n-i-1])
- rep[s[i]-'a']+=1;
- }
- vector<int> _rep;
- for(int i=0;i<26;i++)
- {
- if(rep[i]!=0)
- _rep.push_back(rep[i]);
- }
- if(_rep.size()==0)
- {
- cout<<0<<endl;
- return;
- }
- if(_rep.size()==1)
- {
- cout<<_rep[0]<<endl;
- return;
- }
- sort(_rep.begin(),_rep.end());
- int n1=_rep.size();
- vector<int> prefix(n1,0);
- vector<int> suffix(n1,0);
- prefix[0]=_rep[0];
- suffix[n1-1]=_rep[n1-1];
- for(int i=1;i<n1;i++)
- prefix[i]=prefix[i-1]+_rep[i];
- for(int i=n1-2;i>=0;i--)
- suffix[i]=suffix[i+1]+_rep[i];
- int ind=0;
- for(int i=n1-1;i>0;i--)
- {
- if(suffix[i] == prefix[i-1])
- {
- cout<<suffix[i]<<endl;
- return;
- }
- else if(suffix[i] > prefix[i-1])
- {
- ind=i;
- break;
- }
- }
- cout<<prefix[ind-1]+int(ceil((1.0*suffix[ind]-prefix[ind-1])/2))<<endl;
- }
- int main()
- {
- int T;cin>>T;
- while(T--)
- {
- solve();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement