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