#include #include using namespace std; struct znak { char z; int p = 1; }; bool is_pali(vector &v, int start, int end, int &pom) { if(start == end) { pom = 0; return true; } for(int i = start, j = end; i <= (start + end) / 2; i++, j--) { if(v[i].z != v[j].z || (v[i].z == v[j].z && v[i].p != v[j].p && i != start)){ pom = v[i].p; return false; } } pom = v[start].p - v[end].p; if(pom < 0){ pom = v[start].p; return false; } return true; } int main() { ios_base::sync_with_stdio(false); long long N; cin >> N; long long newN=N; vector input; char c; cin >> c; input.push_back(znak{c,1}); for(int i = 1; i < N; ++i){ cin >> c; if(c == input[input.size()-1].z){ input.back().p++; --newN; }else{ input.push_back(znak{c,1}); } } int w = 0; int pominiete = 0; for(int i = 0; i < newN; i++) { if(is_pali(input, i, input.size() - 1, pominiete)) { w += pominiete ; break; } w += pominiete; } cout << w << endl; return 0; }