传送门
根据鏼爷在WC2017的理论,答案为n-nxt[n].
裸的kmp++
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<cstdlib>
#define M 1000005
using namespace std;
char s[M];
int n,t,nxt[M];
int main(){
scanf("%d%s",&n,s+1);
for (int i=2;i<=n;i++){
while (t&&s[i]!=s[t+1]) t=nxt[t];
if (s[i]==s[t+1]) t++;
nxt[i]=t;
}
printf("%d",n-nxt[n]);
}