画画图发现,就是m-fail[m]。。。
#include <cstdio>
#include <cstring>
#define N 1000010
int fail[N],m;
char s[N];
inline void getfail(){
int k=0;fail[1]=0;
for(int i=2;i<=m;++i){
while(k&&s[k+1]!=s[i]) k=fail[k];
if(s[k+1]==s[i]) ++k;
fail[i]=k;
}
}
int main(){
// freopen("a.in","r",stdin);
scanf("%d%s",&m,s+1);
getfail();
printf("%d\n",m-fail[m]);
return 0;
}