#include #include #include using namespace std; typedef long long ll; int main() { cin.sync_with_stdio(false); cin.tie(); cout.tie(); int n; cin >> n; string s; cin >> s; vector v; int dp[n + 1][26]; for (int i = 0; i < n; i++) for (int j = 0; j <26;j++) dp[i][j] = 0; for (int i = 0; i < 26; i++) { dp[0][i] = 0; } dp[0][s[0] - 'a'] = 1; for (int i = 0; i < n; i++) { if (s[i] == s[n - 1]) v.push_back(i); if (i >= 1) { for (int j = 0; j < 26; j++) { dp[i][j] = dp[i - 1][j]; } dp[i][s[i] - 'a']++; } } for (int i = 0; i < v.size(); i++) { if (s[v[i]] == s[n - 1]) { int b = n - 1; int a = v[i]; bool cc = true; int mal = v[i] - 1; int br = 0; for (int j = 0; j < 26; j++) { int mid = (v[i] + n - 1) / 2; int prv = v[i] - 1; int vtor = mid; int tret = mid; if (( n - v[i]) % 2) tret = mid - 1; int cetvrt = n - 1; int ka = 0; int br1 = 0; int br2 = 0; if (prv < 0) br1 = dp[vtor][j]; else br1 = dp[vtor][j] - dp[prv][j]; if (tret < 0) br2 = dp[cetvrt][j]; else br2 = dp[cetvrt][j] - dp[tret][j]; if (br1 != br2) { br = 2; break; } } if (br > 1) continue; else { while (a < b) { if (s[a] != s[b]) { cc = false; break; } a++; b--; } if (cc) { cout << v[i] << endl; return 0; } } } } return 0; }