semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
void main()
{
	char c[3][300];
	int l1,l2,i=0,j=0,k=0,n;
	scanf("%s",c[0]);
	scanf("%s",c[1]);
	scanf("%s",c[2]);
/*	printf("%s",c[0]);*/

	l1=strlen(c[0]);
	l2=strlen(c[1]);

	while (i<l1) 
	{
		if(k==l2) break;
		if(c[0][i]==c[1][j]) 
		{
			k+=1;
			j+=1;
			i+=1;
		}
		else
		{
			if(j<l2-1)
			{
				k=0;
				j+=1;
			}
			if(j==l2-1)
			{
				k=0;
				j=0;
				i+=1;
			}
		}
	}
/*	printf("%d\n",i-l2);*/
	if(k==l2)
	{
		for(n=i-l2;n<i;n++)
		{
			c[0][n]=c[2][n+l2-i];
		}
	}
	printf("%s\n",c[0]);



}
int main()
{
	char s[102],a[102],b[102];
	char *p1,*p2,*p3;
	gets(s);
	gets(a);
	gets(b);
	p1=s;
    p2=a;
	p3=b;
	int i,j,k=0,len,m,len2;
    len=strlen(s);
	for(i=0;i<len;i++){
		if(*p2==p1[i]){
			j=i;
			m=i;
			for(;*p2!='\0';p2++,j++){
				if(*p2==p1[j]){
				   k++;
				}
				else{
					break;
				}
			}
		}
	}
	len2=strlen(a);
	if(k!=len2){
		printf("%s",s);
	}
	if(k==len2){
		for(i=0;i<m;i++){
			printf("%c",s[i]);
		}
		printf("%s",b);
		for(i=i+k;i<len;i++){
			printf("%c",s[i]);
		}
	}
	return 0;
}
int main(){
	char yuanchuan[257];
	char zichuan[257];
	char replacement[257];
	int i,j,k;
	int len1,len2;
	scanf("%s%s%s",yuanchuan,zichuan,replacement);
	len1=strlen(yuanchuan);
	len2=strlen(zichuan);
	k=len1;
	for(i=0;i<len1-len2+1;i++){
		for(j=0;j<len2;j++){
			if(yuanchuan[i+j]!=zichuan[j]){
				break;
			}
			if(j==len2-1){
				k=i;
			}
		}
		if(k!=len1){
			break;
		}
	}
	if(k==len1){
		printf("%s",yuanchuan);
	}else{
	    for(i=0;i<k;i++){
		    printf("%c",yuanchuan[i]);
		}
	    printf("%s",replacement);
		for(i=k+len2;i<len1;i++){
			printf("%c",yuanchuan[i]);
		}
	}
	return 0;
}
int main(void)
 {
	char string[256]={'\0'};
	char subString[100]={'\0'};
	char replacement[100]={'\0'};
	int i=0,j=0,k=0;
	char c='\0';
	while(c != '\n')
	{
		c=getchar();
		if(c != '\n')
		{
			string[i] = c;
			i++;
		}
	}
	scanf("%s",subString);
	scanf("%s",replacement);
	for(i=0;i<strlen(string);i++)
	{
		if(string[i] == subString[0])
		{
			k=i;
			for(j=0;j<strlen(subString);j++,k++)
			{
				if(subString[j] != string[k]){break;}
			}
			if(j==strlen(subString))
			{
				k=i;
				for(j=0;j<strlen(replacement);j++,k++)
				{
					string[k]=replacement[j];
				}
				break;
			}
		}
	}
	printf("%s\n",string);
    return 0;
 }
int main(int argc, char* argv[])
{
	char a[256],b[256],c[256];
	int la,i,j,lb,lc,h=300,p;
	scanf ("%s %s %s",a,b,c);
    la=strlen (a);
	lb=strlen (b);
	lc=strlen (c);
    for (j=0;j<la;j++)
	{   
		if (b[0]==a[j]) 
		{   
			for (i=0;i<lb;i++) 
			{	if (b[i]!=a[j+i]) 
					break;
            if ((i==lb-1) && (b[i]==a[j+i]))
			{	
				h=j;
			    j=100;
				break;
			}
			}
		}
	}
    if(h!=300)
	{
    	for (p=h;p<h+lb;p++)
		{
		     a[p]=c[0+p-h];
		}
	}
printf("%s",a)    ;

	return 0;
}
int main()
{
  char s[256],s1[256],t[256];
  int j,ls1,lt,i,k=0;
  scanf("%s%s%s",s,s1,t);
  ls1=strlen(s1);
  lt=strlen(t);
  for(i=0;s[i];i++)
  {
    if(s[i]==s1[k])
    {
      k++;
      if(k==ls1-1)
        break;
    }
    else
      k=0;
  }
  
  if(i>=strlen(s))
    printf("%s\n",s);
  else
  {
  for(j=0;j<i-ls1+2;j++)
    printf("%c",s[j]);
  printf("%s",t);
  for(j=i+2;j<strlen(s);j++)
    printf("%c",s[j]);
  printf("\n");
}
}
//********************************
//*???????   **
//*?????? 1200012988 **
//*???2012.12.24  **
//********************************


int main()
{
    char str[256], sub[256], replace[20];
    char *p;
    int len1, len2, len3, i, m;
    cin >> str;
    cin >> sub;
    cin >> replace;
    len1 = strlen(str);
    len2 = strlen(sub);
    len3 = strlen(replace);
    p = strstr(str, sub);
    if(p != NULL)
    {
        if(len2 > len3)
        {
            m = len2 - len3;
            for(i = 0; i < len3; i++)
                *p++ = replace[i];
            for(i = 0; *(p + m + i) != str[len1 - 1]; i++)
                *p = *(p + m);
            len1 -= m;
        }
        if(len2 == len3)
        {
            for(i = 0; i < len3; i++)
                *p++ = replace[i];
        }
        if(len2 < len3)
        {
            m = len3 - len2;
            for(i = len1 - 1; str[i] != *(p + m - 1); i--)
                str[i + m] = str[i];
            for(i = 0; i < len3; i++)
                *p++ = replace[i];
            len1 += m;
        }
    }
    for(i = 0; i < len1; i++)
        cout << str[i];
    cout << endl;

    return 0;
}
int main()
{
	int i, j, k, lch, lsub ,lre;
	char ch[256];
	char subch[256];
	char replace[256];
	cin >> ch;
	cin >> subch;
	cin >> replace;
	lch = strlen(ch);
	lsub = strlen(subch);
	lre = strlen(replace);
	for (i = 0 ; i < lch ; i++)
	{
		if (ch[i] == subch[0])
		{
			for (j = 0 ; j < lsub ; j++)
			{
				if (ch[i + j] != subch[j])
				break;
			}
			if (j == lsub)
			{
				for (k = 0 ; k < lsub ; k++)
				{
					ch[i + k] = replace[k];
				}
				break;
			}
		}
	}
	for (i = 0 ; i < lch ; i++)
	{
		cout << ch[i];
	}
	return 0;
}
int main()
{
	int m,n,i,j,s;
	char str[256],c[256],d[256];
	gets(c);
	gets(str);
	gets(d);
	m=strlen(str);
	n=strlen(c);
	for(i=0;i<n-m+1;i++)
	{
		if(c[i]==str[0])
		{
			s=0;
			for(j=i;j<i+m;j++)
			{
				if(c[j]==str[j-i])
				{
					s=s+1;
				}
			}
			if(s==m)
			{
				break;
			}
		}
	}
	if(s==m)
	{
		for(j=i;j<i+m;j++)
		{
			c[j]=d[j-i];
		}
	}
	puts(c);
	return 0;
}
int main()
{int n,i,j,k,a,b,c;
c=0;
char t[256]={0};
char s[256]={0};
char r[256]={0};
char z[256]={0};
scanf("%s %s %s",t,s,r);
a=strlen(t);
b=strlen(s);
for(i=0;i<=a-b;i++)
{for(j=i;j<b+i;j++)
z[j-i]=t[j];
if(strcmp(z,s)==0)
{c=i;
break;
}
}
if(c==0)
{for(i=0;i<a;i++)
printf("%c",t[i]);}
else
{for(i=0;i<c;i++)
printf("%c",t[i]);
printf("%s",r);
for(j=c+b;j<a;j++)
printf("%c",t[j]);
}
return 0;
}
int main()
{
    int i,j,k,result;
    char input[100],substring[20],replace[20],cpy[20];
    scanf("%s\n%s\n%s",input,substring,replace);
    result=strlen(input)-strlen(substring);
	for(i=0;i<=result;i++)
    {
        if(input[i]==substring[0])
        {
            int a;
            a=strlen(substring);
            for(j=0;j<a;j++)
            {
                cpy[j]=input[i+j];
				cpy[j+1]='\0';
            }
            int m;
            m=strcmp(cpy,substring);
            if(m==0)
            {

                for(k=0;k<i;k++)
                {
					printf("%c",input[k]);
                }
				printf("%s",replace);
				for(k=i+a;k<strlen(input);k++)
                {
					printf("%c",input[k]);
                }
				return 0;    
            }
        }
    }
	printf("%s",input);
	return 0;
}
int main()
{
	char str[300], subStr[10], re[10];
	int i, j, lenth, m, n;
	int flag = 0;
	cin >> str >> subStr >> re;
	lenth = strlen(str);
	n = strlen(subStr);
	m = strlen(re);
	for (i = 0; i < lenth; i++)
	{
		j = 0;
		if (str[i] == subStr[j])
		{
			for (j = 0; j < n; j++)
			{
				if (str[i] == subStr[j])
					i++;
				else
					break;
			}
		}
		if (j == n)
		{
			flag = 1;
			for ( ; j > 0; i--, j--)
			{
				str[i - 1] = re[j - 1];
			}
		}
		if (flag == 1)
		{
			break;
		}
	}
	cout << str;
	return 0;
}
int main()
{
	int i,len1,len2,len3,j,m=0,l;
	char zifu[256],chazhao[256],tihuan[256];
	scanf("%s%s%s",zifu,chazhao,tihuan);
	len1=strlen(zifu);
	len2=strlen(chazhao);
	len3=strlen(tihuan);
	for(i=0;i<len1;i++)
	{   m=0;
		if(zifu[i]==chazhao[0])
		{
			for(j=0;j<len2;j++)
			{
				if(zifu[i+j]==chazhao[j])
					m++;
				if(zifu[i+j]!=chazhao[j])
					break;
			}

		}
			if(m==len2)
				break;

	}


	if(i<len1)
	{
		if(len2==len3)
		{
			for(l=0;l<len2;l++)
				zifu[i+l]=tihuan[l];
		}
		else if(len2>len3)
		{
			for(l=0;l<len3;l++)
			{
				zifu[i+l]=tihuan[l];
			}
			for(l=i+len2;l<len1+1;l++)
				zifu[l+len3-len2]=zifu[l];
		}
		else if(len2<len3){
			for(l=i+len2;l<len1+1;l++)
				zifu[l+len3-len2]=zifu[l];
			for(l=0;l<len3;l++)
				zifu[i+l]=tihuan[l];
		}
	}

	printf("%s\n",zifu);
	return 0;
}
int main()
{
	char s[300],subs[15],reps[15];
	int i,j,k,ls,lsub,lrep,w;
	scanf("%s",s);
	scanf("%s",subs);
	scanf("%s",reps);
	ls=strlen(s);
	lsub=strlen(subs);
	lrep=strlen(reps);
	for(i=0;i<ls;i++)
	{
		w=0;
		for(j=0;j<lsub;j++)
		{
			if(s[i+j]==subs[j]) w++;
		}
		if(w==lsub)
		{
			for(k=0;k<i;k++)
				printf("%c",s[k]);
			for(k=0;k<lrep;k++)
				printf("%c",reps[k]);
			for(k=i+lsub;k<ls;k++)
				printf("%c",s[k]);
			break;
		}
	}
	if(w!=lsub) printf("%s\n",s);
	return 0;
}
int main()
{
	char a[514],b[514],c[514],d[256];
	gets(a);
	gets(b);
	gets(c);
	int i,j,k,l,m,n,t,p,q,x,z,y;
	l=strlen(a);
	m=strlen(b);
	for(i=0;i<l-m+1;i++)
	{
		if(a[i]==b[0])
		{
			k=0;
			for(j=i,t=0;j<i+m;j++,t++)
			{
				if(a[j]!=b[t])
				{
					k=1;
					break;
				}
			}
			if(k==0)
			{
				p=i;
				q=i+m;
				break;
			}
		}
	}
	if(k==0)
	{
		for(i=q,j=0;i<l;i++,j++)
		{
			d[j]=a[i];
		}
		d[j]=0;
		strcat(c,d);
	    a[p]=0;
	    strcat(a,c);
	    printf("%s\n",a);
	}
	else
	{
		printf("%s\n",a);
	}
	return 0;
}
int main()
{
char s[256],a[100],b[100];
int i=0,z=0,c=0,d,j,f,e;
gets(s);
gets(a);
gets(b);
c=strlen(a);
e=strlen(s);
while(i<e)
{
if(s[i]==a[z]){
f=0;
for(d=i;d<i+c;d++)
{
if(s[d]==a[z]){
    f++;
z++;
}
}
if(f==c){
z=0;
for(d=i;d<i+c;d++)
{
s[d]=b[z];
z++;
}
break;
}else{
z=0;
}
}
i++;
}
for(i=0;i<e;i++)
{
printf("%c",s[i]);
}
return 0;
}
main()
{
      char a[1000],b[1000],c[1000];
      int d[1000];
      int i,j=0,k,m,n;
      scanf("%s",a);
      scanf("%s",b);
      scanf("%s",c);
      for(i=0;;i++)
      {
                   if(a[i]=='\0') break;
                   else
                   {
                       if(a[i]==b[0])
                       {
                                     j++;
                                     d[j]=i;
                                     }
                   }
      }
      if(j==0) printf("%s",a);
      else 
    {m=j;
      for(i=0;;i++)
      {
                   if(b[i]=='\0') break;
      }
      n=i;
      for(j=0;j<m;j++)
      {
                      k=d[j];
                      for(i=0;i<n;i++)
                      {
                                      if(b[i]!=a[i+k]) break;
                                      }
                      if(i==n) break;
      }
      for(i=0;i<n;i++)
      {
                      a[i+d[j]]=c[i];
      }
      printf("%s",a);
    }
}
int main()
{
	char a[280],b[280],c[280];
	char res[280];
	char t[280];
	int i,j;
	int check=0;
	scanf("%s %s %s",a,b,c);
	
	for(i=0;i<strlen(a);i++)
	{
		if(check==1)break;
		if(b[0]==a[i])
		{
			for(j=0;j<280;j++)t[j]='\0';
			for(j=0;j<280;j++)res[j]='\0';
			for(j=i;j<i+strlen(b);j++)t[j-i]=a[j];
			if(strcmp(b,t)==0)
			{
				check=1;
				for(j=0;j<i;j++)res[j]=a[j];
				for(j=i;j<strlen(c)+i;j++)res[j]=c[j-i];
				for(j=strlen(c)+i;j<strlen(a)+strlen(c)-strlen(b);j++)res[j]=a[j+strlen(b)-strlen(c)];
			}

		}

	}
	if(check==1)printf("%s\n",res);
	else printf("%s\n",a);
	return 0;

}
int main(){
	int n,i,j,b,a;
	char s[1000],s1[1000],s2[1000];
	char *ps1=s1,*ps2=s2;
	gets(s2);
	gets(s1);
	gets(s);
	int l1=strlen(s1);
	int l2=strlen(s2);
	for(a=0,b=0;a<l2&&b==0;a=i+1){
	    for(i=a,ps1=s1,ps2=s2+a;*ps1!=*ps2&&*ps1!='\0'&&*ps2!='\0';ps2++,i++);
	    for(j=0,b=1;*ps1!='\0'&&*ps2!='\0';ps1++,ps2++,j++){
			if(*ps1!=*ps2&&j<l1){
			    b=0; 
				break;
			}
		}
		
	}
	if(i==l2)
		printf("%s",s2);
	else{
		n=i;
	    s2[n]='\0';
	    printf("%s",s2);
	    printf("%s",s);
	    ps2=s2+n+l1;
	    printf("%s",ps2);
	}
	return 0;
}
main()
{
    char a[256],b[256],c[256];
    gets(a);
    gets(b);
    gets(c);
    int n=strlen(a);
    int m=strlen(b);
    int i,j;
    for(int i=0;i<n;i++)
    {
        if(a[i]==b[0])
        {
            for(j=1;j<m;j++)
            {
                if(a[i+j]!=b[j])
                break;
            }
            if(j==m)
            {
                for(j=0;j<m;j++)
                {
                    a[i+j]=c[j];
                }
                break;
            }
        }
    }
    puts(a);
}
int main(int argc, char* argv[])
{
    int la,lb,i,j,n,k,x,p;
	char a[100],b[100],c[100],d[100];
	scanf("%s %s %s",a,b,d);
	la=strlen(a);
	lb=strlen(b);
	n=la-lb;
	for(i=0;i<=n;i++)
	{
        if(b[0]==a[i])
		{
			k=i;
			p=i;
			for(j=0;j<lb;j++)
			{
				c[j]=a[k];
				k++;
			}
			c[lb]='\0';
			if(strcmp(c,b)==0)
			{
				for(x=0;x<lb;x++)
				{
					a[p]=d[x];
					p++;
				}
				break;
			}
		}
		else 
			continue;
	}


printf("%s",a);
				return 0;
	
}
int main()
{
	char a[999],b[999],* aa,* bb;
	char c[999][999],* cc;
	char d[999];
	gets(b);
	gets(a);
	gets(d);
	int len=strlen(a);
	int len2=strlen(b);
	int k=0,i,j=0;
	for(bb=b;*(bb+len-1)!='\0';bb++,k++)
	{
		i=0;
		for(cc=c[k];i<len;i++,cc++)
		{
			* cc=* (bb+i);
		}
		* cc='\0';
		j++;
	}
	int sp=0;
	for(i=0;i<j;i++)
	{
		if(strcmp(a,c[i])==0)
		{
			sp=1;
			break;
		}
	}
	char e[2][999];
	int pom=i;
	for(i=0;i<pom;i++)
	{
		e[0][i]=b[i];
		e[0][pom]='\0';
	}
	k=0;
	for(i=pom+len;i<len2;i++,k++)
	{
		e[1][k]=b[i];
	}
	e[1][k]='\0';
	if(sp==1)
	{
		printf("%s%s%s",e[0],d,e[1]);
	}
	if(sp==0)
	{
		puts(b);
	}
	return 0;
}
int comp(char a[100],char b[100],int i)
{
	int l,j;
	l=strlen(b);
	for (j=0;j<l;j++)
		if (a[i+j]!=b[j])
			return 0;
		return 1;
}


int main(int argc, char* argv[])
{
	int i,j,len1,len2,len3,break1=0;
	char a[100],b[100],c[100];
    int comp(char a[100],char b[100],int i);
	scanf("%s %s %s",a,b,c);
	len1=strlen(a);
    len2=strlen(b);
    len3=strlen(c);
	for (i=0;i<100;i++)
	{
		if (a[i]==b[0])
		{
			if (comp(a,b,i))
			{
				for (j=0;j<i;j++)
				{
					printf("%c",a[j]);
				}
				printf("%s",c);
				
				for (j=j+len2;j<len1-len2+len3;j++)
					printf("%c",a[j]);
				break;
				break1=1;
			}
		}
		if (break1==1) break;
		if (i==strlen(a)) printf("%s",a);
	}
				
	return 0;
}
int search(char a[],char b[])
{
    int la=strlen(a),lb=strlen(b),i,j;
    for (i=0;i<=lb-la;i++)
    {
        for (j=0;j<la;j++)
            if (a[j]!=b[i+j])
               break;
        if (j==la)
           return i;
    }
    return 999; 
}
int main()
{
    char s[300],a[300],b[300];
    int m,i;
    scanf("%s%s%s",&s,&a,&b);
    m=search(a,s);
    if (m==999)
    {
       printf("%s\n",s);
       getchar();
       getchar();
       return 0;
    }
    for (i=0;i<m;i++)
        printf("%c",s[i]);
    printf("%s",b);
    for (i+=strlen(a);i<strlen(s);i++)
        printf("%c",s[i]);
    getchar();
    getchar();
    return 0;
}
int main(int argc, char* argv[])
{
	char a[3][257];
	int i;
	int l1,l2,l3,re;
	for(i=0;i<3;i++)
		scanf("%s",a[i]);
	l1=strlen(a[0]);
	l2=strlen(a[1]);
	l3=strlen(a[2]);
	int j,k,z=0,num=0,x=0,count=0;
	for(j=0;j<l1;j++)
	{
		if(a[0][j]==a[1][0])
		{
			z=j+1;
			for(k=1;k<l2;k++)
			{
				if(a[0][z]==a[1][k])
					num++;
				else
					break;
				z++;
			}
		    if(num==l2-1)
			{
				re=1;
				count=j;
			}
			else
				continue;
		}
		else if(re==1)
			break;
		else
			continue;
	}
	if(re==1)
	{
		for(i=count;i<l2+count;i++)
		{
		   a[0][i]=a[2][x];
		   x++;
		}
		printf("%s",a[0]);
	}
	else
	    printf("%s",a[0]);
	return 0;
}
int main()
{
	char s[256], su[256], re[256];
	char t[256]={0};
gets(s);
gets(su);
gets(re);

int i,j=0,len=strlen(s);
int len1=strlen(su);
for(i=0;i<len;i++){
if(s[i]!=su[j]){
j=0;}

else{
	
j++;



}
if(j==len1){

	break;}
}



	if(j!=len1){
	printf("%s",s);
	}
	
int n=i+1;
if(i!=len){
int m=0;
for(n=i+1;n<len;n++){

t[m]=s[n];
m++;
}



int len2=strlen(t);

	s[len-len2-len1]='\0';
	strcat(s,re);
	strcat(s,t);

printf("%s",s);
}
if((i==len)&&(j==len1)){

	
	s[len-len1]='\0';

	strcat(s,re);
printf("%s",s);
}

return 0;}
int main()
{
	char str[300];
	char sub[300];
	char re[300];
	scanf("%s%s%s",str,sub,re);
	int i,j,k,first;
	int len=strlen(str);
	int len1=strlen(sub);
	int len2=strlen(re);
	first=0;
	for(i=0;i<len;i++)
	{
		if(str[i]==sub[0])
		{
			for(k=i,j=0;j<len1;j++,k++)
			{
				if(str[k]!=sub[j])
				{
					break;
				}
			}
		}
		if(j==len1)
		{
			first=i;
			break;
		}
	}
	if(j!=len1)
	{
		printf("%s",str);
	}else
	{
		for(i=0;i<first;i++)
		{
			printf("%c",str[i]);
		}
		printf("%s",re);
		for(i=(first+len2);i<len;i++)
		{
			printf("%c",str[i]);
		}
	}
	return 0;
}
void main()
{
	char string1[256],string2[256],string3[256];
	scanf("%s",string1);
	scanf("%s",string2);
	scanf("%s",string3);
	int length1,length2,length3,i,j,temp;
	length1=strlen(string1);
	length2=strlen(string2);
	length3=strlen(string3);
	for (i=0;i<=(length1-length2);i++)
	{
		if (string1[i]==string2[0])
		{
			j=1;
			temp=i+1;
			while (j<length2&&string1[temp]==string2[j])
			{
				temp++;j++;
			}
			if (j==length2)
			{
				strcpy(string2,string1+temp);
				strcpy(string1+i,string3);
				strcpy(string1+i+length3,string2);
				break;
			}
		}
	}
	printf("%s\n",string1);
}
int main()
{
	int i,j,k,n1,n2;
	char s1[257],s2[257],s3[257];
	gets(s1);
	gets(s2);
	gets(s3);
	n1=strlen(s1);
	n2=strlen(s2);
	for(i=0;i<n1;i++)
		if(s1[i]==s2[0])
		{
			j=0;
			while(s1[i+j]==s2[j]&&j<n2)j++;
			if(j==n2)
			{
				for(k=i;k<i+n2;k++)
					s1[k]=s3[k-i];
				break;
			}
		}
		for(i=0;i<n1;i++)
		printf("%c",s1[i]);
		return 0;
}
int i,j,k,kk;
char s1[305],s2[305];
char s3[305];

int main()
{
    scanf("%s",s1);
    scanf("%s",s2);
    scanf("%s",s3);
    for(i=0;i<strlen(s1);i++)
    {
         for(j=0;j<strlen(s2);j++)
         {
            if(s1[i+j]!=s2[j])
            {
                break;
            }
         }
         if(j==strlen(s2))
         {
             k=i;
             kk=1;
             break;
         }
    }
    if(kk==1)
    {
             for(i=0;i<k;i++)
             {
              printf("%c",s1[i]);
             }
             printf("%s",s3);
             for(i=k+strlen(s2);i<strlen(s1);i++)
             {
               printf("%c",s1[i]);
             }
             printf("\n");
    }
    else
    {
        printf("%s\n",s1);
    }
    return 0;
}
int main()
{
    char s0[257],s1[257],s2[257];
    int i,j,k0,k1,k2,l;
    scanf("%s",s0);
    scanf("%s",s1);
    scanf("%s",s2);
    for(i=0;s0[i]!='\0';i++)
    {
        j=0;
        if(s1[0]==s0[i])
        for(j=1;s1[j]!='\0';j++)
        if(s1[j]!=s0[i+j])break;
        if(s1[j]=='\0')
        {
            k0=k1=k2=0;
            while(s0[k0]!='\0')k0++;
            while(s1[k1]!='\0')k1++;
            while(s2[k2]!='\0')k2++;
            for(l=i+k1;l<k0;l++)
            s0[l+k2-k1]=s0[l];
            for(l=0;l<k2;l++)
            s0[i+l]=s2[l];
            break;
        }
    }
    l=0;
    while(s0[l]!='\0')
    {
        printf("%c",s0[l]);
        l++;
    }

}
int main() 
{ 
	char string[256];
	char substring[256];
	char replacement[256];
	int x;
	gets(string);
	gets(substring);
	gets(replacement);
	x=strstr(string,substring)-&string[0];
	if(strchr(string,substring[0])!=0)memmove(string+x,replacement,strlen(replacement));
	printf("%s",string);
	return 0;
}
int main(){
	char s[256],ow[256],rw[256];
	scanf("%s%s%s",s,ow,rw);
	int lens,lenow;
    int i,j,k,l,t,flag;
	lens=strlen(s);
	lenow=strlen(ow);
	for(i=0;i<=(lens-lenow);i++){
		flag=1;
		for(j=0;j<lenow;j++){
			if(s[i+j]!=ow[j]){
				flag=0;
				break;
			}
		}
		if(flag!=0){
			t=i;
			break;
		}
	}
	if(flag==0){
		printf("%s",s);
	}
	else{
		for(k=0;k<t;k++){
			printf("%c",s[k]);
		}
		printf("%s",rw);
		for(l=t+lenow;l<lens;l++){
			printf("%c",s[l]);
		}
	}
	return 0;
}
int main()
{
    char str[256], substr[256], replace[256];
    cin >> str >> substr >> replace;
    int lenstr = strlen(str), 
        lensubstr = strlen(substr), 
        lenreplace = strlen(replace);
    int i, j;
    int flag = 0; //flag=1???? 
    int pos; //???????????pos
    for (i = 0; i <= lenstr - lensubstr; i++)
    {
        for (j = 0; j < lensubstr; j++)
        {
            if (str[i + j] != substr[j]) //??????? 
                break; //????
        } 
        if (j == lensubstr) //????
        {
            pos = i; 
            flag = 1;
            break;
        }
    }
    if (flag) //???? 
    {
        for (i = 0; i < pos; i++)
            cout << str[i]; //??????????????
        cout << replace; //???????
        cout << (str + pos + lensubstr) << endl; //??????????
    }
    else cout << str << endl; //???????????? 
    return 0;
}
int main()
{
	char a[256],b[256],c[256],*d,*e,*f,*g;
	int i;
	gets(a);
	g=a;
	gets(b);
	gets(c);
	d=strstr(a,b);
	if(!d)
	{
		printf("%s",g);
		exit(0);
	}
	f=a;
	i=strlen(a)-strlen(d);
	f[i]='\0';
	e=a+(strlen(a)-(strlen(d)-strlen(b)));
	printf("%s%s%s\n",f,c,e);
	return 0;
}
int main()
{
	char s[1000], a[1000], b[1000], n[1000];
	int j, i, pos, len1, len2, flag = 0;

	cin >> s;
	cin >> a;
	cin >> b;
	if(!strstr(s,a))
	{
		cout << s << endl;
		return 0;
	}
	len1 = strlen(s);
	len2 = strlen(a);

	for(i=0,j=0;s[i]!='\0';i++)
	{
		if(j>=len2)
			break;
		if(s[i]==a[j])
		{
			j++;
			continue;
		}
	
		if(j)
		{
			i -= j;
			j = 0;
	
		}
		
	}

		pos = i;
		j = i - j;
		for(i=0;i<j;i++)
			n[i] = s[i];
		for(j=0;b[j]!='\0';j++,i++)
			n[i] = b[j];
		j = pos;
		for(;s[j]!='\0';i++,j++)
			n[i] = s[j];
		n[i] = '\0';
		cout << n << endl;

	return 0;
}
int main()
{
	char str[256],subs[256],rpl[256];
	int i,j,len1=0,len2=0,c=0,m;
	cin>>str>>subs>>rpl;
	len1=strlen(subs);
	len2=strlen(rpl);
	for(i=0;i<256&&str[i]!=0;i++)
	{
		if(str[i]==subs[0])
		{
			c=0;
			for(j=0;j<len1;j++)
			{
				if(str[i+j]!=subs[j])
				{
					c=1;
					break;
				}
				else
				{
					c=c+1;
				}
			}
		}
		if(c==len1)
		{
			break;
		}
	}
	if(c==0)
	{
		for(m=0;m<256&&str[m]!=0;m++)
		{
			cout<<str[m];
		}
	}
	if(c==len1)
	{
		for(m=0;m<i;m++)
		{
			cout<<str[m];
		}
		for(m=i;m<i+len2;m++)
		{
			cout<<rpl[m-i];
		}
		for(m=i+len2;m<256&&str[m]!=0;m++)
		{
			cout<<str[m];
		}
	}
	return 0;
}
int main()
{
    char *p1,*p2,*p3,*p,*q;
    int i,j;
    p1=(char*)malloc(100*sizeof(char));
    p2=(char*)malloc(100*sizeof(char));
    p3=(char*)malloc(100*sizeof(char));
    q=(char*)malloc(100*sizeof(char));
    gets(p1);
    gets(p2);
    gets(p3);
    p=strstr(p1,p2);
    if(p==NULL)
      printf("%s",p1);
    else{
        for(i=0;p1!=p;p1++,i++)
       *(q+i)=*p1;
    *(q+i)='\0';
   for(j=0;j<strlen(p3);j++)
     *(q+i+j)=*(p3+j);
    for(j=0;*(p1+strlen(p2)+j)!='\0';j++)
      *(q+i+strlen(p3)+j)=*(p1+strlen(p2)+j);
     *(q+i+strlen(p3)+j)='\0';
     printf("%s",q);}
}
int main()
{
	char a[300],b[300],c[300],d[300],e[300];
	int i,j,k,l;
	i=0;
	j=0;
	gets(a);
	gets(b);
	gets(e);
    while(a[i]!='\0')
	{
		c[j]=a[i];
		if(c[j]==b[0]&&(i+strlen(b)<=strlen(a)))
		{
			l=0;
			for(k=i;k<=i+strlen(b)-1;k++)
			{
				d[l]=a[k];
				l++;
			}
			d[l]='\0';
			if(strcmp(d,b)==0)
			{
				c[j]='\0';
				printf("%s",c);
				printf("%s",e);
				j=i+strlen(b);
				k=0;
				while(a[j]!='\0')
				{
					c[k]=a[j];
					j++;
					k++;
				}
				c[k]='\0';
				printf("%s",c);
				return 0;
			}
		}
		i++;
		j++;
	}
	printf("%s",a);
	return 0;
}
int main()
{
	char str[100],substr[50],r[50];
	gets(str);
	gets(substr);
	gets(r);
	int i,j,n,same=0; 
	int l=strlen(substr);
	for(i=0;str[i]!=0;i++)
	{
		if(substr[0]==str[i])
		{
			same=1;
			for(j=1;substr[j]!=0;j++)
			{
				if(substr[j]!=str[i+j])
				{
					same=0;
					break;
				}
			}
			if(same==1)
			{
				n=i;
			    break;
			}
		}
    }
    if(same==1)
	{
		for(j=0;j<n;j++)
		{
			printf("%c",str[j]);
	    }
	    printf("%s",r);
	    for(j=n+l;str[j]!=0;j++)
	    {
			printf("%c",str[j]);
	    }
	}
	if(same==0)
	{
		printf("%s",str);
	}
	return 0;
}
int main() 
{
    char str[257*2]; 
    char sub[257], rep[257];
    int i, j, k, ss=0, se=0;

    gets(str);
    gets(sub);
    gets(rep);

    for (i=0; str[i]!=0; i++) {
       
        if (str[i] == sub[0]) {
      
            for (k=i+1,j=1; str[k]!=0&&sub[j]!=0; k++,j++) {
                if (str[k] != sub[j]) {
                    break;
                }
            }
            if (sub[j] == 0) {
      
                ss = i;                 se = k; 
                break;
            }
        }
    }
  
    if (ss < se) {
        if (strlen(sub) <= strlen(rep)) {
        
            for (i=ss,j=0; rep[j]!=0; i++,j++) {
                str[i] = rep[j];
            }
         
            for (k=se; str[k]!=0; k++,i++) {
                str[i] = str[k];
            }
            
            str[i] = 0;
        }
        else {

            i=strlen(str)+strlen(rep)-strlen(sub);
            for (k=strlen(str); k>=se; k--,i--) {
                str[i] = str[k];
            }

            for (i=ss,j=0; rep[j]!=0; i++,j++) {
                str[i] = rep[j];
            }
        }
    }

    printf(str);
    return 0;
}