#include<>
#include<>
#include<>
typedef struct
{
char *ch;
}SString;
void InitString(SString *P);
void StrAssign(SString *P,char charc[]);
void Get_next(SString *P,int next[]);
int Index_KMP(SString *S,SString *T,int next[]);
void InitString(SString *P)
{
P->ch='\0';
return ;
}
void StrAssign(SString *P,char charc[])
{
int i,len;
if(P->ch)
free(P->ch);
len=strlen(charc);
if(!charc)
{
P->ch='\0';
}
else
{
P->ch=(char *)malloc((len+1)*sizeof(char));
if(!P->ch)
{
exit(-1);
}
else
{
for(i=0;i<len;i++)
{
P->ch[i+1]=charc[i];
}
P->ch[0]=len;
}
}
return ;
}
void Get_next(SString *P,int next[])
{
int i=1;
next[1]=0;
int j=0;
while(i<P->ch[0])
{
if(j==0||P->ch[i]==P->ch[j])
{
++i;
++j;
next[i]=j;
}
else
j=next[j];
}
return ;
}
int Index_KMP(SString *S,SString *T,int next[])
{
int i=1,j=1;
while(i<=S->ch[0]&&j<=T->ch[0])
{
if(S->ch[i]==T->ch[j])
{
++i;
++j;
}
else
{
j=next[j];
if(j==0)
{
i++;
j=1;
}
}
}
if(j==T->ch[0]+1)
return i-T->ch[0];
else
return 0;
}
int main()
{
int i,pos;
int Next[100];
char chara[101];
char charb[101];
SString S,T;
for(i=0;i<3;i++)
{
InitString(&S);
InitString(&T);
scanf("%s%s",chara,charb);
StrAssign(&S,chara);
StrAssign(&T,charb);
Get_next(&T,Next);
pos=Index_KMP(&S,&T,Next);
printf("%d\n",pos);
}
return 0;
}