#include <bits/stdc++.h>
using namespace std;
int main(){
string s;
cin >> s;
int wyn=0;
int rozm=s.size();
for(int i=0;i<s.size();i++){
if(s[i]=='a')wyn++;
}
//cerr << " ROZM " << rozm << '\n';
int reszt=rozm-wyn;
if(rozm%2==0){
if(wyn%2==1){
cout << -1;
return 0;
}
}
wyn=0;
int i=0;int j=rozm-1;
int k;
char c='b';
char d='a';
if(rozm%2==1 && s[rozm/2]=='a'){
c='a';
d='b';
}
while(i<1+rozm/2 && j>rozm/2-1){
if(s[i]==d && s[j]==c){
int k=i;
while(s[k]!=s[j]){
k++;
if(rozm%2==1 && k==rozm/2+1){
k++;
}
}
s[k]=d;
s[i]=c;
wyn+=k-i;
//cerr << " k " << k << " i " << i << " znak k " << s[k] << " wyn " << wyn << '\n';
}
if(s[i]==c && s[j]==d){
int k=j;
while(s[k]!=s[i]){
k--;
if(rozm%2==1 && j==rozm/2+1){
k--;
}
}
s[k]=d;
s[i]=c;
wyn+=j-k;
//cerr << " k " << k << " i " << i << " znak k " << s[k] << " wyn " << wyn << '\n';
}
i++;
j--;
}
cout << wyn;
}
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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | #include <bits/stdc++.h> using namespace std; int main(){ string s; cin >> s; int wyn=0; int rozm=s.size(); for(int i=0;i<s.size();i++){ if(s[i]=='a')wyn++; } //cerr << " ROZM " << rozm << '\n'; int reszt=rozm-wyn; if(rozm%2==0){ if(wyn%2==1){ cout << -1; return 0; } } wyn=0; int i=0;int j=rozm-1; int k; char c='b'; char d='a'; if(rozm%2==1 && s[rozm/2]=='a'){ c='a'; d='b'; } while(i<1+rozm/2 && j>rozm/2-1){ if(s[i]==d && s[j]==c){ int k=i; while(s[k]!=s[j]){ k++; if(rozm%2==1 && k==rozm/2+1){ k++; } } s[k]=d; s[i]=c; wyn+=k-i; //cerr << " k " << k << " i " << i << " znak k " << s[k] << " wyn " << wyn << '\n'; } if(s[i]==c && s[j]==d){ int k=j; while(s[k]!=s[i]){ k--; if(rozm%2==1 && j==rozm/2+1){ k--; } } s[k]=d; s[i]=c; wyn+=j-k; //cerr << " k " << k << " i " << i << " znak k " << s[k] << " wyn " << wyn << '\n'; } i++; j--; } cout << wyn; } |
English