#include using namespace std; typedef long long ll; void buildTable(string &w, vector &t) { t = vector(w.length()); int i = 2, j = 0; t[0] = -1; t[1] = 0; while (i < w.length()) { if (w[i - 1] == w[j]) { t[i] = j + 1; i++; j++; } else if (j > 0) { j = t[j]; } else { t[i] = 0; i++; } } } int KMP(string &s, string &w) { int m = 0, i = 0; vector t; buildTable(w, t); int max_suffix = 0; while (m + i < s.length()) { if (w[i] == s[m + i]) { i++; if (i == w.length()) { return s.length(); } } else { m += i - t[i]; if (i > 0) { i = t[i]; } } } return i; } int main() { int len; string str; cin >> len >> str; string strrev; for(int i = len -1; i >= 0; i--) { strrev += str[i]; } cout << len - KMP(str, strrev) << endl; return 0; }