semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
int main()
{
 char string[257];
 char substring[257];
 char replacement[257];
 int h,i,j,k,l1,l2,l3,temp,r=0,flag=0;
 scanf("%s",string);
 scanf("%s",substring);
 scanf("%s",replacement);
 l1=strlen(string);
 l2=strlen(substring);
 l3=strlen(replacement);
 for(i=0;i<l1;i++){
       if(string[i]==substring[0]){
        temp=i;
        r=0;
            for(j=0;j<l2;j++){
                 if(string[temp+j]==substring[j]){
                  r=r+1;
                 }
            }
            if(r==l2){

                 for(h=0;h<temp;h++){
                  printf("%c",string[h]);
                 }
                 for(j=0;j<l3;j++){
                  printf("%c",replacement[j]);
                 }
                 for(k=temp+l2;k<l1;k++){
                  printf("%c",string[k]);
                 }

                return 0;
            }
       }

  }
     
  printf("%s",string);
  return 0;
    
}
void main()
{
	char s[100],w[100],p[100],t[100];
	int i,j,flag=1;
	scanf("%s",w);
	scanf("%s",s);
	scanf("%s",t);
	for(i=0;i<strlen(w);i++)
	{
		for(j=0;j<strlen(s);j++)
		{
			p[j]=w[i+j];
		}
		flag=1;
		for(j=0;j<strlen(s);j++)
		{
			if(p[j]!=s[j]) flag=0;
		}
		if(flag!=0)
		{
			for(j=0;j<strlen(s);j++)
			{
				w[i+j]=t[j];
			}
			break;
		}
	}
	printf("%s",w);
}
int main()
	{
		char string[257]={0},substring[257]={0},replacement[257]={0};
	char temp[257]={0},string_1[257]={0},string_2[257]={0};
	int i,j,k,word=0;
	int len1=0,len2=0,len3=0;
	gets(string);
	gets(substring);
	gets(replacement);
	len1=strlen(string);
	len2=strlen(substring);
	for(i=0;i<=len1-len2;i++)
	{
		for(j=i,k=0;j<i+len2,k<len2;j++,k++)
		{
			temp[k]=string[j];
		}
		if(strcmp(temp,substring)==0)
		{
			word=1;
			len3=i;
			break;
		}
	}
	for(i=0;i<len3;i++)
	{
		string_1[i]=string[i];
	}
	if(word==1)
	{
		printf("%s",string_1);
		printf("%s",replacement);
		if((len2+len3)<len1)
		{
			k=0;
			for(i=len3+len2;i<len1;i++)
			{
				string_2[k]=string[i];
				k++;
			}
			printf("%s",string_2);
		}
	}
	if(word==0)
	{
		printf("%s",string);
	}
	return 0;
}
int main(){
   int i,a,b,c,d,e,sum=0,m=0,t=0,p,q,flag=0,flag2=0;
   char str[256],substr[256],rep[256],str1[256],str2[256];
   gets(str);
   gets(substr);
   gets(rep);
   a=strlen(str);
   b=strlen(substr);
   c=strlen(rep);
		for(m=m;m<a;m++){
			if(str[m]==substr[0]){
				for(p=m,q=0;q<b;p++,q++){
					if(str[p]!=substr[q]){
					flag=1;}
					
				}
				if(flag==1){
                                     flag=0;

				continue;}
                else{
				  flag2=1;
				  break;
				}

			}
			else{continue;}
		}
	
	

   
   if(flag2==1){
    
   for(i=0,d=0;i<m,d<m;d++,i++){
      str1[d]=str[i];
   }
   str1[m]='\0';
   for(i=m+b,e=0;i<a,e<a-m-b;e++,i++){
      str2[e]=str[i];
   }
   str2[a-m-b]='\0';
   printf("%s%s%s",str1,rep,str2);



   }
 else{
      printf("%s",str);
   }

return 0;
}
void main()
{
	char c,d,str1[256],str2[256],str3[256];
	int l,h,i,j=0,k,st=0;
	scanf("%s",str1);
	scanf("%s",str2);
	scanf("%s",str3);
	l=strlen(str2);
	for(i=0;((c=str2[i])!='\0');i++)
	{
		c=str2[i];
		for(;((d=str1[j])!='\0');j++)
		{
			d=str1[j];
			if(c==d)
			{
				st=st+1;
				j=j+1;
				break;
			}
			else if((c!=d)&&(st!=0))
			{
				st=0;
				i=-1;
				break;
			}
		}
	}
	if(st==l)
	{
		for(h=0,k=(j-l);k<j;k++,h++)
		{
			str1[k]=str3[h];
		}
		printf("%s\n",str1);
	}
	else printf("%s\n",str1);
}
int main()
{
    char string[256];
    char substring[256];
    char replacement[256];
    scanf("%s",string);
    scanf("%s",substring);
    scanf("%s",replacement);
    int lenth=0;
    int judge=0;
    for(int i=0;substring[i]!='\0';i++)
    {
        lenth++;    
    }
    for(int i=0;i<256;i++)
    {
        if(string[i]==substring[0])
        {
            int count;
            for(count=0;substring[count]!='\0';count++)
            {
                if(string[i+count]!=substring[count])
                {
                    break;                         
                }    
            }
            if(count==lenth)
            {
                for(int j=0;j<i;j++)
                {    
                    printf("%c",string[j]);
                }
                printf("%s",replacement);
                for(int j=i+lenth;string[j]!='\0';j++)
                {
                    printf("%c",string[j]);    
                }
                judge=1;      
                break;      
            }                      
        }    
    }
    if(judge==0)
    {
        printf("%s",string);            
    }
    return 0;
}
int main()
{
	char a[256],b[256],c[256];
	int la,lb,lc,i,j,p=0;
	scanf ("%s",a);
	scanf ("%s",b);
	scanf ("%s",c);
	la=strlen(a);
	lb=strlen(b);
	lc=strlen(c);
	for (i=0;i<la;i++)
	{
		if (b[0]==a[i])
		{
			for (j=1;j<lb;j++)
			{
				if (b[j]==a[i+j])
					p=0;
				else
					p=1;
			}
			if (p==0)
			{
				for (j=0;j<lc;j++)
					a[i+j]=c[j];
				break;
			}
		}
	}
	printf ("%s",a);
	return 0;
}
int dingwei(char duan[50],char chang[50])
{
	int i,geshu1=0,geshu2=0;
	for(i=0;duan[i]!='\0';i++){
		geshu1+=1;
	}
	for(i=0;chang[i]!='\0';i++){
		geshu2+=1;
	}
	int j,cishu=0,weizhi=0;
	for(i=0;i<=(geshu2-geshu1);i++){
		for(j=0;j<geshu1;j++){
			if(duan[j]==chang[i]){
				cishu++;
				i++;
			}else{
				break;
			}
		}
		if(cishu==geshu1){
			weizhi=i-geshu1;
			break;
		}else{
			cishu=0;
			continue;
		}
	}
	if(cishu==0){
		return -1;
	}else{
		return weizhi;
	}
}
int main()
{
	char zfc[300],beiti[256],ti[256];
	scanf("%s%s%s",zfc,beiti,ti);
	int lenzfc,lenbt,lent,weizhi,i;
	lenzfc=strlen(zfc);
	lenbt=strlen(beiti);
	lent=strlen(ti);
	weizhi=dingwei(beiti,zfc);
	if(weizhi<0){
		printf("%s\n",zfc);
	}else{
		if(lenbt==lent){
			for(i=0;i<lenbt;i++){
				zfc[weizhi+i]=ti[i];
			}

		}
		else if(lenbt>lent){
			for(i=0;i<lent;i++){
				zfc[weizhi+i]=ti[i];
			}
			for(i=0;i<(lenzfc-lenbt-weizhi);i++){
				zfc[weizhi+lent+i]=zfc[weizhi+lenbt+i];
			}
			zfc[lenzfc-lenbt+lent]='\0';
		}else if(lenbt<lent){
			for(i=lenzfc-1;i>=weizhi+lenbt;i--){
				zfc[i+lent-lenbt]=zfc[i];
			}
			for(i=0;i<lent;i++){
				zfc[weizhi+i]=ti[i];
			}
			zfc[lenzfc+lent-lenbt]='\0';
		}
		printf("%s\n",zfc);
	}
	return 0;
}
int main()
{
	char str1[257];
	char str2[257];
	char str3[257];
	cin>>str1>>str2>>str3;
	char*p=NULL;
	p=strstr(str1,str2);
	if(p!=NULL)
	{
		for(int i=0;i<strlen(str3);i++)
		{
			*p=*(str3+i);
			p++;
		}
	}
	printf("%s\n",str1);
	return 0;
}
int main()
{
	char str[300], subString[300], replacement[300];
	char *p, *q;
	int strLen, subLen, repLen, move, i;
	cin >> str >> subString >> replacement;
	strLen = strlen(str);
	subLen = strlen(subString);
	repLen = strlen(replacement);
	p = strstr(str, subString);
	if (p == NULL)
	{
		cout << str;
		return 0;
	}
	q = replacement;
	if (repLen > subLen)
	{
		move = repLen - subLen;
		for (q = str + strLen + move; q >= p + repLen; q--)
		{
			*q = *(q - move);
		}
		i = 0;
		q = replacement;
		while (i < repLen)
		{
			*p++ = *q++;
			i++;
		}
	}
	else
	{
		i = 0;
		while (i < repLen)
		{
			*p++ = *q++;
			i++;
		}
		if (repLen < subLen)
		{
			move = subLen - repLen;
			while (*(p + move) != '\0')
			{
				*p++ = *(p + move);
			}
			*p = '\0';
		}
	}
	cout << str << endl;
	return 0;
}
int main()
{
	char a[100], b[100], c[100];
	char *p;
	int i, len2;
	cin.getline(a,100);
	cin.getline(b,100);
	cin.getline(c,100);
	len2 = strlen(b);
	p = strstr(a,b);
	if(p != NULL)
	{
		for(i = 0;a+i != p;i++)
			cout << a[i];
		cout << c;
		if(*(p+len2) != '\0')
		{
			for(i = 0;*(p+len2+i) != '\0';i++)
				cout << *(p+i+len2);
		}
	}
	else cout << a <<endl;
	return 0;
}
int main()
{
	char string[256];
	char subString[256];
	char replacement[256];
	char result[256];
	int L1,L2,L3;
	int i,j,t=1,flag=0;
	int l,m,n;
	gets(string);
	gets(subString);
	gets(replacement);
	L1=strlen (string);
	L2=strlen (subString);
	L3=strlen (replacement);
	for (i=0;i<L1;i++)
	{
		for (j=0;j<L2;j++)
		{
			if (subString[j]!=string[j+i])
			{
				t=0;
				break;
			}
		}

		if (t==1)
		{
			for (l=0;l<i;l++)
			{
				result[l]=string[l];
			}
			m=0;
			for (l=i;m<L3;l++,m++)
			{
				result[l]=replacement[m];
			}
			for (n=i+L2;n<L1;n++,l++)
			{
				result[l]=string[n];
			}
			result[l]='\0';
			flag=1;
			break;
		}
		t=1;
}
	
	if (flag==1)
	printf ("%s",result);
	if (flag==0)
		printf ("%s",string);
	return 0;
}
int main(){
	char s[100]={'\0'},w[50]={'\0'},d[50]={'\0'},h[100]={'\0'};
	int i,j,k=0,t=0,m,n=0;
	gets(s);
	gets(w);
	gets(d);
	for(i=0;s[i]!='\0';i++){
		if((s[i]==w[0])&&(n==0)){
			k=0;
			for(j=0;w[j]!='\0';j++){
				t=0;
				if(w[j]==s[i+j]){
					k++;
					t=1;
				}
			}
			if(t==1){
				for(m=0;d[m]!='\0';m++){
					printf("%c",d[m]);}i=i+k;n=1;
			}
		}
		if(s[i]!='\0'){printf("%c",s[i]);}
	}
}
main()
{
      char a[1000],b[1000],c[1000];
      int l,i,j,k,temp;
      scanf("%s %s %s",a,b,c);
      l=strlen(b);
      for(i=0;a[i]!='\0';i++)
      {
                             if(a[i]==b[0])
                             {
                                           temp=0;
                                           for(j=0;j<l;j++)
                                           {
                                                           if(b[j]!=a[j+i]) break;
                                           }
                                           if(j==l)
                                           {
                                                   for(j=0;j<l;j++)
                                                   {
                                                                   a[j+i]=c[j];
                                                   }
                                                   break;
                                           }
                             }
      }
      printf("%s",a);
      
}
int main()
{
	int i,j,k,n=0;
	char t[260],s[260],w[260];
	gets(w);
	gets(s);
	gets(t);
	for (i=0;i<strlen(w);i++)
	{
		k=1;
		for (j=0;j<strlen(s);j++)
			if (s[j]!=w[i+j]) k=0;
			if (k) {n=i;break;}
	}
	if (n)
	{
		for (i=0;i<n;i++) printf("%c",w[i]);
		printf("%s",t);
		for (i=n+strlen(s);i<strlen(w);i++) printf("%c",w[i]);
	}
	else printf("%s",w);
	return 0;
}
void main()
{
	char a[300],b[100],e[100],c[100]={0},g[100]={0},s[300]={0};
	int j,i,k,f,l,d,h=1;
	gets(a);
	gets(b);
	gets(e);

	k=strlen(a);
	d=strlen(b);

	for(i=0;i<k&&h<2;i++)
	{
		if(a[i]==b[0])
		{
			j=i;
			strncpy(g,a,j);
		for(f=0;f<d;f++,j++)
		{
			c[f]=a[j];
		}
		    j=i;
		for(f=0,l=j+d;f<k-j-d  ;f++,l++)
		{	
			s[f]=a[l];
		}
		s[k-d-j] = 0;
		if(strcmp(b,c)==0)
		{
			h=h+1;
			printf("%s",g);
		    printf("%s",e);
	    	printf("%s",s);
		}
		}
	}
	if(h==1)
		printf("%s",a);
}
int main(){
	char s[257]={'0'},sub[257]={'0'},rep[257]={'0'},temp[257]={'0'};
	scanf("%s%s%s",s,sub,rep);
	int i,j,k,len1,len2,time;
	len1=strlen(s);
	len2=strlen(sub);
	for(i=0;i<len1;i++){
		k=i;
		for(j=0;j<len2;j++,i++){
			temp[j]=s[i];
		}
		i=k;
		if(strcmp(temp,sub)==0){
			time=i;
			break;
		}
	}
	if(strcmp(temp,sub)==0){
	for(i=time,j=0;i<time+len2;i++,j++){
s[i]=rep[j];
	}
}
	printf("%s",s);
	return 0;
}
int main()
{
		char a1[257*2],a2[257],b1[257];
		int i,j,k,start=0,end=0;
		gets(a1);
		gets(a2);
		gets(b1);
		for(i=0;a1[i]!=0;i++){
			if(a1[i]==a2[0]){
				for(j=i+1,k=1;a2[k]!=0;j++,k++){
					if(a1[j]!=a2[k]){
						break;
					}
				}
				if(a2[k]==0){
					start=i;
					end=j;
					break;
				}
			}
		}
		if(start<end){
				for(i=start,k=0;b1[k]!=0;i++,k++){
					a1[i]=b1[k];
				}
				for(j=end;a1[j]!=0;i++,j++){
					a1[i]=a1[j];
				}
				a1[i]=0;
		}
		printf(a1);
		return 0;
}
int main()
{
	char a[260],b[260],c[260];
	int i,j,k=0,len1,len2,flag,m,t,q;
	scanf("%s%s%s",b,a,c);
	len1=strlen(a);
	len2=strlen(b);
	for(i=0;i<len2;i++)
	{flag=1;q=1;
		if(b[i]==a[0])
		{
			k=i+1;
			for(j=1;j<len1;j++)
			{
				if(b[k++]!=a[j])
				{
					flag=0;
					break;
				}
			}
			if(flag==1)
			{
				t=0;
				for(m=i;m<i+len1;m++)
					b[m]=c[t++];
				q=0;

			}
			
		}
		if(q==0)
			break;
	}
		printf("%s\n",b);
		return 0;
}
int main()
{
	char s[300],s1[300],s2[300]={'\0'};
	int i,j,len,count=0,m;
	gets(s);
	gets(s1);
	gets(s2);
	len=strlen(s);
    for(i=0;i<len;i++)
	if(s[i]==s1[0])
	{for(j=1;s1[j]!='\0';j++)
                 if(s[j+i]!=s1[j])
					 break;
				 if(j>=strlen(s1))
				 {m=i;count=1;break;}
	}
    if(count) 
	{for(i=0;i<m;i++)
	printf("%c",s[i]);
	for(i=0;s2[i]!='\0';i++)
		printf("%c",s2[i]);
	for(j=i+m;j<len;j++)
		printf("%c",s[j]);
	}
	else
		printf("%s",s);
	
	return 0;
}
main()
{
      char a[256],b[256],c[256];
      gets(a);
      gets(b);
      gets(c);
      int n=0,q=0;
      for(int i=0;b[i]!='\0';i++)
      {
              n++;
              }
      for(int i=0;a[i]!='\0';i++)
      {
              q++;
              }
      int i,j,k,p;
      for(i=0;a[i]!='\0';i++)
      {
              int m=0;
              for(j=0;j<n;j++)
              {
                      if(a[i+j]==b[j])
                      m++;
                      }
                      if(m==n)
                      break;
                      }
      if(i==q)
      for(p=0;a[p]!='\0';p++)
      {
      printf("%c",a[p]);
      }
      else
      {
      for(k=0;c[k]!='\0';k++)
      {
                        a[k+i]=c[k];
                        }
      for(p=0;a[p]!='\0';p++)
      {
              printf("%c",a[p]);
              }
              }
              getchar();
              getchar();
              getchar();
              getchar();
              getchar();
              getchar();
              getchar();
              getchar();
              getchar();
              getchar();
              getchar();
              }
int main()
{  char str[300*100],sub[100],rep[100];
    gets(str);
    gets(sub);
	gets(rep);
   int i,j,k,t,w;
   t=0;
   w=0;
   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){
									  t=i;
									  w=k;
									  break;
									  }
									  }
									  }
									  if(w>t){
									  		  if(strlen(sub)>=strlen(rep)){
											  							   for(i=t,j=0;rep[j]!=0;i++,j++){
										   								  str[i]=rep[j];}
										   								  for(k=w;str[k]!=0;i++,k++){
													  							 str[i]=str[k];
																				 }
										                         str[i]=0;  }
																 else{
											 	  i=strlen(str)+strlen(rep)-strlen(sub);
											 	  for(k=strlen(str);k>=w;k--,i--){
																	 str[i]=str[k];
																	 }
												for(i=t,j=0;rep[j]!=0;i++,j++){
														str[i]=rep[j];
														}
														}
														}
														printf(str);        
  
  return 0;
}
void main()
{
	char st[256],sub[256],rep[256];
	scanf("%s%s%s",st,sub,rep);
	int lenst,lensub,i,j;
	lenst=strlen(st);
	lensub=strlen(sub);
	for(i=0;i<=lenst-lensub;i++)
	{
		int count=0;
		if(lensub!=1)
		{
			if(st[i]==sub[0])
			{
				
				for(j=i+1;j<i+lensub;j++)
				{
					if(st[j]!=sub[j-i])
						break;
					count++;
				}
			}
			if(count==lensub-1)
			{
				for(j=i;j<i+lensub;j++)
				{
					st[j]=rep[j-i];
				}
				break;
			}
		}
		else
		{
			if(st[i]==sub[0])
			{
				st[i]=rep[0];
				break;
			}
		}
	}
	printf("%s",st);
}
void main()
{
	char s[256+16],tar[256+16],rep[256+16];
	int a,b,i,j,k,c=0;
	scanf("%s",s);
	scanf("%s",tar);
	scanf("%s",rep);
    a=strlen(s);
	b=strlen(tar);
	for(i=0;i<a-b+1;i++)
	{
		for(j=0;j<b;j++)
		{
			if(tar[j]!=s[i+j]) break;
			if(j==b-1)
			{
				for(k=0;k<=i-1;k++)
					printf("%c",s[k]);
				printf("%s",rep);
				for(k=i+b;k<a;k++)
					printf("%c",s[k]);
				c=1;
				break;
			}
		}
		if(c==1) break;

	}
	if(c==0) printf("%s",s);
}
//***************************** 
//*  ??: ???? 
//*  ????? 
//*  ???1200012941 
//*  ???2012?12?24? 
//***************************** 
int main()
{
    int i, j, k, flag = 0;
    char str[512], substr[256], replace[256];
    cin.getline(str, 512);
    cin.getline(substr, 256);
    cin.getline(replace, 256);
    int len1 = strlen(str);
    int len2 = strlen(substr);
    int len3 = strlen(replace);
    for (i = 0; i <= len1 - len2; i++)
    {
         k = i;
         for (j = 0; j < len2; j++)
         {
              if (str[k++] != substr[j])
                  break;
         }
         if (j == len2 && flag == 0)
         {
             int ii;
             for (ii = i; ii < i + len3; ii++)
             {
                  str[ii] = replace[ii - i];
             }
             flag = 1;
         }
    }
    for (i = 0; str[i] != '\0'; i++)
    {
        cout << str[i];
    }
    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]=rep[j];
}
}
}
printf(str);
return 0;
}
int main()
{
	char s[257],a[257],b[257];
	scanf("%s %s %s",s,a,b);
	int i = 0,j = 0;
	int find = 0;
	for(i = 0;s[i] != '\0';i ++)
	{
		if(s[i] == a[0])
		{

			for(j = 0;a[j] != '\0';j ++)
			{
				//printf("%d",i + j);
				if(a[j] != s[i + j])
				{
					find = 0;
					break;
				}
			}
			if(a[j] == '\0')
				find = 1;
		}
		if(find ==1)
			break;
	}
	if(find)
	{for(j = 0;b[j] != '\0';j ++)
		s[i + j] = b[j];
	}
	printf("%s",s);
	return 0;
}
void main()
{
  char string[260],sub[50],replace[50],result[260];
  int i,j,t=0,mark=0,a=0;
  scanf("%s%s%s",string,sub,replace);
for(i=0;string[i]!='\0';i++,mark++)
  {
    if(string[i]==sub[0])
    {
         a=0;
         for(t=i,j=0;sub[j]!='\0';t++,j++)
         {
        			if(sub[j]!=string[t])
              {
                       a=1;
                       break;
              }
         }
         if(a==0){break;}
    }
  }
if(mark==strlen(string))   printf("%s\n",string);
else
{
      for(i=0;i<mark;i++)
      {
         result[i]=string[i];
      }
      for(i=mark,j=0;j<strlen(replace);i++,j++)
      {
          result[i]=replace[j];
      }
/*result[i]=0;*/
/*printf("%s\n", result);*/

      for(i=mark+j,t=mark+strlen(sub);string[t]!='\0';i++,t++)
      {
          result[i]=string[t];
      }
      result[i]='\0';
      printf("%s\n",result);
}
return;
}
int main()
{
    char string[260], subString[260], replacement[260], string3[260];
    cin >> string >> subString >> replacement;
    char *p = strstr(string, subString);
    if (p == NULL) {
        cout << string << endl;
        return 0;
    }
    int i = 0, j, k, len1 = strlen(subString), len2 = strlen(replacement);
    for (i = 0; *(p + len1 + i) != '\0'; i++) {
        string3[i] = *(p + len1 + i);
    }
    string3[i] = '\0';
    *p = '\0';
    strcat(string, replacement);
    strcat(string, string3);
    cout << string << endl;
    return 0;
}
void main()
{
	int i,j,k,t,l1,l2,l3,judge;
	char s[256],a[256],b[256];
	gets(s);
	l1=strlen(s);
	gets(a);
	l2=strlen(a);
	gets(b);
	l3=strlen(b);
	for(i=0;i<=l1-l2;i++)
	{
		judge=1;
		for(j=0;j<l2;j++)
			if(s[i+j]!=a[j])
			{
				judge=0;
				break;
			}
		if(judge==1)
		{
			t=i;
			break;
		}
	}
	if(judge==1)
		for(k=0;k<l3;k++)
			s[t+k]=b[k];
	puts(s);
}
int judge(int i,char s[800],char sub[800])
{
    /*printf("%d\n",i);
    printf("%s\n",sub);*/
    int j,k;
    for (j=i;j<=i+strlen(sub)-1;j++)
    if (s[j]!=sub[j-i]) break;    
    if (j==i+strlen(sub)) return 1;
    else return 0;
}
void change(int i,char s[800],char sub[800],char r[800])
{
     int l,ls,lr,j,k;
     l=strlen(s);
     ls=strlen(sub); lr=(strlen(r));
     /*printf("%d",i);*/
     if (ls<=lr) { k=lr-ls; 
                   for (j=l+k+1;j>=i+lr;j--) s[j]=s[j-k];
                   for (j=i;j<=i+lr-1;j++)
                   s[j]=r[j-i];
                   }
     else {k=ls-lr;
           for (j=i+lr;j<=l-k+1;j++) s[j]=s[j+k];
           for (j=i;j<=i+lr-1;j++)
           s[j]=r[j-i];
           }
}
main()
{
      char s[800],sub[800],r[800];
      int l,i;
      scanf("%s",s);
      scanf("%s",sub);
      scanf("%s",r);
      l=strlen(s);
      for (i=0;i<l;i++)
      if ((s[i]==sub[0])&&(judge(i,s,sub)>0)) {change(i,s,sub,r); break;}
      puts(s);
}
int main()
{
int i,j,l,l1;
char s[256],a[256],b[256],t[256];
gets(s);
gets(a);
gets(b);
l=strlen(s);
l1=strlen(a);
for(i=0;i<=l-1;i++)
{for(j=0;j<=l1-1;j++)
{t[j]=s[i+j];}
if(strcmp(t,a)==0)
{for(j=0;j<=l1-1;j++)
{s[i+j]=b[j];}
break;}}
puts(s);
return 0;
}
void main()
{
	char a[100],b[100],c[100];
	int i,a1,b1,c1,n=0,m,t,j,p=0;
	scanf("%s %s %s",a,b,c);
	a1=strlen(a);
	b1=strlen(b);
	c1=strlen(c);
	for(i=0;i<a1;i++)
	{
		for(j=0;j<b1;j++)
		{
			if(a[i+j]==b[j]) p=p+1;
		}
		if(p==b1) 
		{
			for(m=0;m<i;m++)
				printf("%c",a[m]);
			printf("%s",c);
			for(m=b1+i;m<a1;m++)
				printf("%c",a[m]);
			n=9;break;
		}
		p=0;
	}
	if(n==0) printf("%s",a);
}
int main()
{
	char str[257],sub[257],re[257];
	int i,j,k,n1,n2,n3,h=0;
	scanf("%s%s%s",str,sub,re);
	n1=strlen(str);
	n2=strlen(sub);
	n3=strlen(re);
	for(i=0;i<=n1-n2;i++)
	{  
	    if(str[i]==sub[0])
		{
			int ll=0;
			for(j=0;j<n2;j++)
			{
				if(str[i+j]!=sub[j])
				{
					ll=1;
					break;
				}
				else
					continue;
			}
		    if(ll==0)
			{
				h=1;
				for(k=0;k<i;k++){
				    printf("%c",str[k]);
				}
				for(k=0;k<n3;k++){
					printf("%c",re[k]);
				}
				for(k=i+n2;k<n1;k++){
					printf("%c",str[k]);
				}
				break;
			}
			else
				continue;
		 }
	}
	if(h==0)
		printf("%s",str);
	return 0;
}
void main()
{
	char s[260],w[260],h[260];
	int l1,l2,i,j,k=0;
	scanf("%s",s);
	scanf("%s",w);
	scanf("%s",h);
	l1=strlen(s);
	l2=strlen(w);
	for(j=0;j<l1;j++)
	{
		if(s[j]==w[0])
		{
			for(i=1;i<l2;i++)
				if(s[j+i]!=w[i])
					break;
				if(i==l2)
				{
					k=1;
					break;
				}
		}
	}
				if(k)
				{
					for(k=0;k<j;k++)
						printf("%c",s[k]);
					for(k=0;k<l2;k++)
						printf("%c",h[k]);
					for(k=j+l2;k<l1;k++)
						printf("%c",s[k]);
					printf("\n");
				}
				else
				{
					printf("%s",s);}
	}
int main()
{
	char str[257],s[257],r[257];
	int len1,len2,len3,i,j,k,c,flag=0;
	scanf("%s%s%s",str,s,r);
	len1=strlen(str);
	len2=strlen(s);
	len3=strlen(r);
	j=0;
	while(str[j]!='\0')
	{
		if(str[j]==s[0])
		{
			c=j;
			for(i=0;i<len2;i++)
			{
				if(str[j+i]!=s[i])
				{
					flag=0;
					break;
				}
			}
				if(i==len2)
				{
					flag=1;
					break;
				}
			}
				j++;
			}
			if(flag)
			{
				for(k=0;k<c;k++)
				printf("%c",str[k]);
				printf("%s",r);
				for(k=c+len2;k<len1;k++)
				printf("%c",str[k]);
			}
			else
			printf("%s",str);
			return 0;
		}
int main()
{
	char s[300], *p, sub[50], *q, *c, rep[50];
	cin >> s >> sub >> rep;
	int len = strlen(sub);
	p = s;
	q = sub;
	c = strstr(p, q);
	if (c == NULL)
	{
		cout << s << endl;
	}
	else
	{
		for (p; p < c; p++)
		{
			cout << *p;
		}
		cout << rep;
		for (p = c + len; *p != '\0'; p++)
		{
			cout << *p;
		}
	}
	cout << endl;
	return 0;
}
int main(){
    char ys[1000],re[1000],bt[1000];
    int m, n, i, j, k,ss=0,se=0;
    gets(ys);
	gets(bt);
	gets(re);
	for(i=0;ys[i]!=0;i++){
		if(ys[i]==bt[0]){
			for(k=i+1,j=1;ys[k]!=0&&bt[j]!=0;k++,j++){
				if(ys[k]!=bt[j]){
		break;}}
			if(bt[j]==0){
		ss=i;
		se=k;
		break;
		}}
	}
	if(ss<se){
        if(strlen(bt)<=strlen(re)){
            for(i=ss,j=0;re[j]!=0;i++,j++){
                ys[i]=re[j];
            }
           for(k=se;ys[k]!=0;k++,i++){
                ys[i]=ys[k];
            }
            ys[i]=0;
        }
        else {
            i=strlen(ys)+strlen(re)-strlen(bt);
            for(k=strlen(ys);k>=se;k--,i--){
                ys[i]=ys[k];
            }
           for(i=ss,j=0;re[j]!=0;i++,j++) {
                ys[i]=re[j];
            }
        }
    }
    printf(ys);
    return 0;
}