#include <bits/stdc++.h>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
string s; cin>>s;
int a=0, b=0;
for (auto i : s)
if (i=='a') a++;
else b++;
if ((a&1) && (b&1))
{
cout<<"-1\n";
return 0;
}
int n=s.length(), ind=0;
long long ans=0;
for (int i=0; i<n/2; i++)
{
if (a==1 || b==1)
{
if (a==1)
{
int j=i;
while (s[j]!='a') j++;
ans+=abs(n/2-j);
}
else
{
int j=i;
while (s[j]!='b') j++;
ans+=abs(n/2-j);
}
break;
}
if (s[i]==s[n-1-i]) continue;
ind=max(ind, i);
while (s[ind]!=s[n-1-i]) ind++;
swap(s[i], s[ind]);
ans+=(ind-i);
}
cout<<ans<<"\n";
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #include <bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); string s; cin>>s; int a=0, b=0; for (auto i : s) if (i=='a') a++; else b++; if ((a&1) && (b&1)) { cout<<"-1\n"; return 0; } int n=s.length(), ind=0; long long ans=0; for (int i=0; i<n/2; i++) { if (a==1 || b==1) { if (a==1) { int j=i; while (s[j]!='a') j++; ans+=abs(n/2-j); } else { int j=i; while (s[j]!='b') j++; ans+=abs(n/2-j); } break; } if (s[i]==s[n-1-i]) continue; ind=max(ind, i); while (s[ind]!=s[n-1-i]) ind++; swap(s[i], s[ind]); ans+=(ind-i); } cout<<ans<<"\n"; return 0; } |
English