#include #include #include #define MAX 300005 using namespace std; string T, P; int b[MAX], n, m; int i, j; void kmpPre() { i = 0, j = -1; b[0] = -1; while (i < m) { while (j >= 0 && P[i] != P[j]) j = b[j]; i++; j++; b[i] = j; } } void kmpSearch() { i = 0, j = 0; while (i < n) { while (j >= 0 && T[i] != P[j]) { j = b[j]; } if(i == n -1) { return; } i++; j++; } } int main() { int N; cin >> N >> P; T = P; reverse(T.begin(), T.end()); n = T.length(); m = P.length(); swap(T, P); kmpPre(); kmpSearch(); cout << m - j - 1 << endl; return 0; }