KMP
求next
int ne[N],p[N],s[N];
for(int i = 1 , j = 0; i <= n ; i ++)
{
while(j && p[i] != p[j+1])j = ne[j];
if(p[i] == p[j + 1]) j ++;
j = ne [j]
}
求ans
int ne[N],p[N],s[N];
for(int i = 1 , j = 0; i <= n ; i ++)
{
while(j && s[i] != p[j+1])j = ne[j];
if(p[i] == p[j + 1]) j ++;
if(j == n)
{
// ans
}
}