void kmp(char* A,char* B)
{
int P[10000],j,i,k,count=0,M=strlen(A),N=strlen(B);
P[0] = -1;
j = -1;
i = 0;
while(i<N)
{
if(j==-1 || B[i]==B[j] )
{
++i;
++j;
P[i]=j;
}
else
j = P[j];
}
k =0;
for(i=0;i<M;++i)
{
while( k && A[i] != B[k]) k = P[k];
if(A[i] == B[k]) k++;
if(k==N)
++count;
}
printf("%d\n",count);
}
{
int P[10000],j,i,k,count=0,M=strlen(A),N=strlen(B);
P[0] = -1;
j = -1;
i = 0;
while(i<N)
{
if(j==-1 || B[i]==B[j] )
{
++i;
++j;
P[i]=j;
}
else
j = P[j];
}
k =0;
for(i=0;i<M;++i)
{
while( k && A[i] != B[k]) k = P[k];
if(A[i] == B[k]) k++;
if(k==N)
++count;
}
printf("%d\n",count);
}