#include <stdio.h>
#include <string.h>
void get_next(char*T,int *next){
int i=1;
next[1]=0;
int j=0;
while (i<strlen(T)) {
if (j==0||T[i-1]==T[j-1]) {
i++;
j++;
next[i]=j;
}else{
j=next[j];
}
}
}
int BF(char*S,char*T)
{
int i=0;
int j=0;
int count=0;
while(i<=strlen(S)&&j<=strlen(T))
{
if(S[i]==T[j])
{
++i;
++j;
++count;
}
else{
i=i-j+2;
j=1;
++count;
}
}
if(j>strlen(T)) return count;
else return -1;
}
int index_KMP(char * S,char * T){
int next[10];
int count=0;
get_next(T,next);
int i=1;
int j=1;
while (i<=strlen(S)&&j<=strlen(T)) {
if (j==0 || S[i-1]==T[j-1]) {
i++;
j++;
++count;
}
else{
j=next[j];
++count;
}
}
if (j>strlen(T)) {
//return i-(int)strlen(T);
return count;
}
else
return -1 ;
}
int main() {
char a[100];char b[100];
scanf("%s",&a);
scanf("%s",&b);
printf("KMP算法移动的次数:%d\n",index_KMP(a,b));
printf("BF算法移动的次数:%d\n",BF(a,b));
return 0;
}