semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
int main()
{
	char zfc[300]={0};
	char tar[300]={0};
	char rep[300]={0};
	char result[300]={0};

	int len1,len2,ischange = 0;
	int index1=0,i,index2 = 0;

	gets(zfc);
	gets(tar);
	len1 = strlen(tar);
	gets(rep);
	len2 = strlen(rep);
	
	while(zfc[index1] != '\0')
	{
		ischange = 1;
		for(i = 0;i < len1; i++)
		{
			if(zfc[index1 + i] != tar[i])
			{
				ischange = 0;
				break;
			}
		}
		if(ischange)
		{
			for(i = 0;i < len2; i++)
			{
				result[index2 + i] = rep[i];
			}
			index2 += len2;
			index1 += len1;
			while(zfc[index1] != '\0')
			{
				result[index2] = zfc[index1];
				index2++;
				index1++;
			}
			break;
		}
		result[index2] = zfc[index1];
		index2++;
		index1++;
	}
	printf("%s",result);
	return 0;
}
int main(){
	char s[257],ss[257],r[257];
	scanf("%s",s);
	scanf("%s",ss);
	scanf("%s",r);
	char left[257];
	int i,t,k,j;
	int ls=strlen(s);
	int lss=strlen(ss);

	for(i=0;i<ls;i++){
		t=0;
		for(j=0;j<lss;j++){
			if(ss[j]==s[i+j]){
				t++;
			}
		}
		if(t==lss){
			for(k=0;k<ls-i-lss;k++){
				left[k]=s[k+i+t];
			}
			left[k]='\0';
			s[i]='\0';
			break;
		}
	}
	printf("%s",s);
	if(t==lss){
	printf("%s",r);
	printf("%s",left);
	}
	return 0;
}
int main()
{
	char a[257],b[257],c[257],d[257],e[257],f[257];
	int i,n1,n2,k,j,m=1;
	gets(a);
	gets(b);
	gets(e);
	n1=strlen(a);
	n2=strlen(b);
	for(i=0;i<n1;i++)
	{
		d[i]=a[i];
		for(k=0;k<n2;k++)
		{
			c[k]=a[i+k];
		}
		c[n2]=0;
		if(strcmp(b,c)==0)
		{
			d[i]=0;
			for(j=0;j<(n1-n2-i);j++)
			{
				f[j]=a[i+n2+j];
			}
			f[j]=0;
			printf("%s%s%s",d,e,f);
			m=0;
                           break;
		}
	}
	if(m)
	{
		puts(a);
	}
	return 0;
}
int main()
{
    char a[256],b[260],c[260],d[520];
    int i,m,a1,b1,c1;
    char *k;
    int j;

    gets(a);
    gets(b);
    gets(c);

    a1=strlen(a);
    b1=strlen(b);
    c1=strlen(c);
    k=strstr(a,b);

    if(k==NULL)
        printf("%s",a);
    else
    {
    m=k-&a[0];
    for(i=0;i<m;i++)
        d[i]=a[i];
    for(i=0;i<c1;i++)
        d[m+i]=c[i];
    j=m+c1;
    for(i=0;m+b1+i<=a1;i++)
        d[j+i]=a[m+b1+i];
    printf("%s",d);
    }
    return 0;
}
int main()
{
	int i=0,j=0,k=0,s=0,a,b,c=0,m=0;
	char string[257],substring[256],replacement[256];
	gets(string);
	gets(substring);
	gets(replacement);
	a=strlen(string);
	b=strlen(substring);
	for(i=0;i<a;i++){
		k=0;
		if(string[i]==substring[0]){
			for(j=i;j<i+b;j++){
				if(string[j]==substring[j-i]) k++;
				else break;
			}
		}
		if(k==b){
			break;
		}
		m=i+1;
	}
	for(i=0;i<a;i++){
			if(i>=m&&i<b+m){
				printf("%c",replacement[i-m]);
			}
			else {
				printf("%c",string[i]);
			}
	}
	return 0;
}
//****************************
//?????? 1200012896*****
//???2013/1/4         *****
//???????         *****
//****************************
int main()
{
	int len, len1, flag = 0, i, j, k;
	char str[256], str1[256], str2[256];
	cin >> str;
	cin >> str1;
	cin >> str2;
	len = strlen(str);
	len1 = strlen(str1);
	for (i = 0; i <= len - len1; i++) //??????????len-len1???
	{
		for (j = 0; j <= len1 - 1; j++) //????????????
		{
			if (str[i + j] == str1[j])
				continue;
			else
				break;
		}
		if (j == len1) //????????????????????????????
		{
			for (k = 0; k < i; k++)
				cout << str[k];
			cout << str2;
			for (k = i + j; k < len; k++)
				cout << str[k];
			flag = 1;
			break;
		}
	}
	if (flag == 0) //?????????
		cout << str;
	return 0;
}
int main(){
    char str[256],a[100],b[100];
    int i,j,h;
    int n,m,result=0;
    int count;
    gets(str);
    scanf("%s%s",a,b);
    n=strlen(str);
    m=strlen(a);
    for(i=0;i<n;i++){
                     count=0;
                     if(str[i]==a[0]){
                                      h=i;
                                      for(j=0;j<m;j++){
                                                       if(str[h+j]==a[j]){
                                                                          count++;
                                                                          }
                                                       }
                                                       if(count==m){
                                                                    printf("%s",b);
                                                                    result=1;
                                                                    break;
                                                       }
                                                       if(count!=m){
                                                                    printf("%c",str[i]);
                                                       }
                                      }
                     else printf("%c",str[i]);
                     if(result==1)
                     break;
                     }
    for(i=h+m;i<n;i++){
                         printf("%c",str[i]);
                         }

  
    return 0;
}
int main()
{
	char src[256] = {0};
	char subString[256] = {0};
	char replacement[256] = {0};	
	char pre[256] = {0};
	char *post;
	scanf("%s %s %s", src, subString, replacement);
	char *start;
	start = strstr(src,subString); //????????????
	if(start != NULL)    //????????
	{
		char *q = pre, *p = src;  //?pre: src?subString?????
		while(p != start)
		{
			*q = *p;
			p++;
			q++;
		}
		*q = '\0';
	
	 post = start + strlen(subString);  //?post:src?subString?????
	 strcat(pre, replacement);  //pre + replacement + post????????
	 strcat(pre, post);
	 printf("%s", pre);
	}
	else
		printf("%s", src);
	return 0;
}
//*********************
//* ??? ????   *
//* 1200012878 ??? *
//* 1?2?            *
//*********************
int main()
{
	char a[257], b[257], c[256]; // ???????????????
	cin.getline(a, 257);
	cin.getline(b, 257);
	cin.getline(c, 257); // ????
	int len1 = strlen(a), len2 = strlen(b), len3 = strlen(c); // ??????????
	int i, j, count, flag = -1, m;
	for (i = 0; i <= len1 - 1; i++)
	{
		m = 0;
		if (a[i] == b[m])
		{
			count = 0;
			for (j = i; j <= i + len2 - 1; j++)
			{
				if (a[j] == b[m++])
					count++;
			} // ?????????????
			if (count == len2)
			{
				flag = i;
				break;
			} // ????????????
		}
	}
	if (flag == -1)
		cout << a; // ????????????
	else
	{
		for (i = flag; i <= flag + len2 - 1; i++)
			a[i] = c[i - flag];
		for (i = 0; i <= len1 - 1; i++)
			cout << a[i];
	}
	return 0;
}
char q[100],a[100],b[100],xc[50][100];
main(){
    scanf("%s",&q);
	scanf("%s",&a);
	scanf("%s",&b);
	int i=0,j=0,k=0,s=0,p=0,qc,ac,bc,r,js=0,sz[100]={0},x,y,z,npc;
	qc=strlen(q);
	ac=strlen(a);
	bc=qc-ac;
	for (i=0;i<bc+1;i++){
		
		for (j=0;j<ac;j++){
		  xc[i][j]=q[j+k];
		}
		k++; 
		p=strcmp(xc[i],a);
		if (p==0){
		sz[js]=i;
		js++;
		}
	/*printf("%s\n",xc[i]);*/
	}
	npc=sz[0];
	
	if (js==0){
	printf("%s\n",q);
	}
	if (js!=0){
		for (x=0;x<npc;x++){
			printf("%c",q[x]);
		}
			printf("%s",b);
		for (z=npc+ac;z<qc;z++){
			printf("%c",q[z]);
		}
	}
	return 0;

}
int main(){
	int i,j,c,k=1;
	char s[300],w[300],t[300];
	scanf("%s",w);
	scanf("%s",s);
	scanf("%s",t);
	int l1=strlen(s);int l2=strlen(w);int l3=strlen(t);
	for(i=0;i<l2;i++){
		c=0;
		for(j=0;j<l1;j++){
			if(!(s[j]==w[j+i])){c=1;break;}
		}
		if((!c)&&(k)){
			for(j=i;j<i+l3;j++){w[j]=t[j-i];}
			k=0;
		}
	}
	printf("%s",w);
	//scanf("%d",&i);
	return 0;
}
int main()
{	
	int i,j,a,m;
	char s1[300],s2[300],s3[300];
	scanf("%s %s %s",s1,s2,s3);
	m=strlen(s1);
	a=strlen(s2);
	for(i=0;i<m;i++)
	{
		for(j=0;j<a;j++)
		{
			if(s2[j]!=s1[i+j])
			break;
		}
		if(j==a)
		{	
			for(j=0;j<a;j++)
			{
				s1[i+j]=s3[j];}
			break;
		};
	}
	printf("%s",s1);
	return 0;
}
int main(){
	char zfc[100], in[30], out[30], x[100], y[100];
	int len, i, t=1, lenall, judge=1;
	gets(zfc);
	scanf("%s", in);
	scanf("%s", out);
	len=strlen(in);
	lenall=strlen(zfc);
	for(i=0;i<=lenall-len;i++){
		strcpy(x,zfc);
		x[i+len]=0;
		if(i!=0){
			x[i-1]=0;
		}
		if(strcmp(&x[i],in)==0){
			if(i!=0){
				strcpy(y,zfc);
				y[i]=0;
				y[i+len-1]=0;
				y[lenall]=0;
				printf("%s%s%s", &y[0],out,&y[i+len]);
				judge=0;
				break;
			}
			else{
				printf("%s%c%s", out, zfc[i+len], &x[i+len+1]);
				judge=0;
				break;
			}
		}
	}
	if(judge)
		printf("%s", zfc);
	return 0;
}
int main()
{
	char s[256],sub[256],replace[256];
	gets(s);
	gets(sub);
	gets(replace);
	
	int ls=strlen(s);
	int lsub=strlen(sub);
	char sr[256];
	int i,j;
	int same;
	for(i=0;i<ls;i++){
		for(j=0;j<lsub;j++){
			sr[j]=s[i+j];
		}
		sr[j]='\0';
		same=strcmp(sr,sub);
		if(same==0){
			printf("%s",replace);
			i=i+lsub;
			printf("%s",&s[i]);
			break;
		}else{
			printf("%c",s[i]);
		}
	}
	return 0;
}
void main()
{
	char q[100],a[10],b[10],lenb,I,*c;
	int i;
	gets(q);
	gets(a);
	gets(b);
	lenb=strlen(b);
   	c=strstr(q,a);
	if(c!=NULL)
	{
		strncpy(c,b,lenb);
		puts(q);
	}
	else if(c==NULL)
	{
		puts(q);
	}
}
int main(){
    char a[256],b[256],c[100][50],x[256],d[256];
	int i,n1,n2,k,m,n,want=-1;
		scanf("%s%s%s",a,b,d);
	n1=strlen(a);
	n2=strlen(b);
	n=n1-n2+1;
	for(k=0;k<n;k++){
		m=k;
		for(i=0;i<n2;i++,m++){
		x[i]=a[m];
		}
		strcpy(c[k],x);
	}
	for(i=0;i<n;i++){
		if(strcmp(b,c[i])==0){
			want=i;
			break;
		}
	}
	if(want==0){
		printf("%s",d);
		for(i=n2;i<n1;i++){
			printf("%c",a[i]);
		}
	}
if(want==(n1-n2)){
	for(i=0;i<want;i++){
		printf("%c",a[i]);
	}
	printf("%s",d);
}
if(want>0&&want<(n1-n2)){
for(i=0;i<want;i++){
	printf("%c",a[i]);
}
	printf("%s",d);
    for(i=want+n2;i<n1;i++){
		printf("%c",a[i]);
	}
}
if(want==-1){
	printf("%s",a);
}
	return 0;
	}
int main()
{
	char s[256],a[256],b[256],ci[256][256];
	int ls,la,lb;
	gets(s);
	gets(a);
	gets(b);
	ls=strlen(s);
	la=strlen(a);
	lb=strlen(b);
	int i,j;
	for (i=0;i<=ls-la;i++)
	{
		for (j=0;j<la;j++)
		{
			ci[i][j]=s[i+j];
		}
			ci[i][la]='\0';
	}
	for (i=0;i<=ls-la;i++)
	{
		if (strcmp(ci[i],a)==0)
		{
			strcpy(ci[i],b);
			break;
		}
	}
	if(i!=ls-la+1)
	{
		for (j=0;j<i;j++)
		{
			printf("%c",ci[j][0]);
		}
		printf("%s",ci[i]);
		if(i!=ls-la)
		{
			for (j=i+la;j<ls-la;j++)
			{
				printf("%c",ci[j][0]);
			}
			printf("%s",ci[ls-la]);
		}
	}
	else
	{
		for (j=0;j<ls-la;j++)
		{
			printf("%c",ci[j][0]);
		}
		printf("%s",ci[ls-la]);
	}
	return 0;
}
int main()
{
	char s[300], rep[300], sub[300];
	cin >> s >> sub >> rep;
	if (strstr(s, sub))
	{
		char * t = strstr(s, sub);
		*t = '\0';
		cout << s << rep << (t + strlen(sub)) << endl;
	}
	else
	{
		cout << s << endl;
	}
	return 0;
}
int main(){
	char mubiao[N];
	char zichuan[N];
	char replace[N];
	int i;
	int j=0;
	int flag;
	scanf("%s",mubiao);
    scanf("%s",zichuan);
	scanf("%s",replace);
	int a=strlen(mubiao);
	int b=strlen(zichuan);
	for(i=0;i<a;i++){
		if(mubiao[i]==zichuan[j]){
			j++;
		}else {
			j=0;
		}
		if(j==b){
		    flag=1;
			break;
		}
	}
	if(flag==1){
	for(j=b-1;j>=0;j--){
		mubiao[i]=replace[j];
		
		
		i--;
	}
	}
	printf("%s\n",mubiao);
	return 0;
}
int f[MAX_LEN];

int kmp(char* p, char* t)
{
	int cur_p = 0, cur_t = 0;
	int len_p = strlen(p);
	int len_t = strlen(t);
	while(cur_p < len_p && cur_t < len_t)
	{
		if(p[cur_p] == t[cur_t])
		{
			cur_p++;
			cur_t++;
		}
		else
		{
			if(cur_p == 0)
				cur_t++;
			else
				cur_p = f[cur_p-1]+1;
		}
	}
	if(cur_p == len_p)
		return cur_t-len_p;
	else
		return -1;
}

void fail(char* p)
{
	int len_p = strlen(p);
	f[0] = -1;
	for(int i=1; i<len_p; i++)
	{
		int j = f[i-1];
		while(p[i]!=p[j+1] && j>=0)
			j = f[j];
		if(p[i] == p[j+1])
			f[i] = j+1;
		else
			f[i] = -1;
	}
}

int main()
{
	char string[257], subString[257], replacement[257];
	char output[512];
	scanf("%s%s%s", string, subString, replacement);
	fail(subString);
	int index = kmp(subString, string);
	if(index > -1)
	{
		int len = strlen(string);
		int sub_len = strlen(subString);
		int rep_len = strlen(replacement);
		int j=0;
		for(int i=0; i<index; i++)
		{
			output[j] = string[i];
			j++;
		}
		for(int i=0; i<rep_len; i++)
		{
			output[j] = replacement[i];
			j++;
		}
		for(int i=index+sub_len; i<len; i++)
		{
			output[j] = string[i];
			j++;
		}
		output[j] = '\0';
		printf("%s", output);
	}
	else
		printf("%s", string);
}
//********************************
//*???????               **
//*??????                 **
//*???2012.12.26             **
//*******************************/


int main ()
{
	char str[256], subStr[256], repStr[256];
	int strLen, subStrLen, repStrLen, i, j, k, flag2 = 0;
	cin.getline(str, 256, '\n');
	cin.getline(subStr, 256, '\n');
	cin.getline(repStr, 256, '\n');
	subStrLen = strlen(subStr);
	repStrLen = strlen(repStr);
	strLen = strlen(str);
	for (i = 0; i < strLen && flag2 == 0; i++)
		if (str[i] == subStr[0])
		{
			int flag1 = 0;
			for (j = 1; j < subStrLen; j++)
				if (str[i + j] != subStr[j])
					flag1 = 1;
			if (flag1 == 0)
			{
				if (subStrLen > repStrLen)
				{
					for (j = 0; j < repStrLen; j++)
						str[i + j] = repStr[j];
					for (j = i + subStrLen; j < strLen; j++)
						str[j - (subStrLen - repStrLen)] = str[j];
				}
				else if (subStrLen == repStrLen)
					for (j = 0; j < repStrLen; j++)
						str[i + j] = repStr[j];
				else
				{
					for (j = strLen - 1; j >= i + subStrLen; j--)
						str[j - (subStrLen - repStrLen)] = str[j];
					for (j = 0; j < repStrLen; j++)
						str[i + j] = repStr[j];
				}
				flag2 = 1;
			}
		}
	if (flag2 == 1)
		for (i = 0; i < strLen - subStrLen + repStrLen; i++)
			cout << str[i];
	else 
		for (i = 0; i < strLen; i++)
			cout << str[i];
	return 0;
}
int main()
{           int i,j,e; 
            char s[256];   
            char b[256]; 
            char a[256];
            gets(s); 
            gets(a);
            gets(b); 
            int c; 
            i=0;    
    for (i=0;s[i]!='\0';i++)
{   j=0;  c=0;  e=i;  
    if (s[i]==a[j])
{   
	for (;a[j]!='\0';j++,i++) 
	{    if (a[j]!=s[i])    
	{     
		c++;    
	}   
	}   
	if (c==0)
	{   
		for (j=0;a[j]!='\0';j++,e++)
		{
			s[e]=b[j];   
		}    
		break;   
	} 
} 
i=e;
}

printf("%s",s); 
return 0;
}
main()
{
      int i,j,k,countb,re;
      char a[256];
      char b[20];
      char c[20];
      scanf("%s",a);
      scanf("%s",b);
      scanf("%s",c);
      for(i=0;b[i]!=0;i++)
      {countb=i;}
      for(i=0;a[i]!='\0';i++)
      {
             re=0;
             if(a[i]==b[0])
             {
                    for(j=i;b[j-i]!='\0';j++)  
                    {if(a[j]!=b[j-i]) break;}
                    if(j==i+countb+1)
                    {
                       re=1;
                       for(j=i;j<=i+countb;j++)  
                       a[j]=c[j-i];                              
                    }       
             }
             else continue;   
             if(re==1)
             break;             
      }
      printf("%s",a);
      getchar();
      getchar();
}
int main()
{
    char a[101];
    char b[101];
    char c[101];
    int i,j;
    int length1,length2,length3;
    int p;
    scanf("%s%s%s",a,b,c);
    length1=strlen(a);
    length2=strlen(b);
    length3=strlen(c);
    for(i=0;i<length1;i++)
    {
        if(a[i]==b[0])
        {
            p=0;
            for(j=1;j<length2;j++)
            {
                if(a[i+j]!=b[j])
                {
                    p=1;
                    break;
                }
            }
            if(p==0)
            {
                for(j=0;j<i;j++)
                {
                    printf("%c",a[j]);
                }
                for(j=0;j<length3;j++)
                {
                    printf("%c",c[j]);
                }
                for(j=i+length3;j<length1;j++)
                {
                    printf("%c",a[j]);
                    
                }
            p=2;
            break;
            }
        }
    }
    if(p!=2)
    {
        for(i=0;i<length1;i++)
        {
            printf("%c",a[i]);
        }
    }
    return 0;
}
int main()
{
	char s3[100];
	char s1[100];
	char s2[100];
	int L1,L2,i,j;
	gets(s1);
	gets(s2);
	gets(s3);
	L1=strlen(s1);
	L2=strlen(s2);
	for(i=0;i<L1;i++)
	{
		if(s1[i]==s2[0]&&s1[i+L2-1]==s2[L2-1])
		{
			for(j=i;j<i+L2;j++)
			{
				s1[j]=s3[j-i];
			}
                             break;
		}
	}
	puts(s1);
	return 0;
}
int main()
{
    char y[100],h[100],c[100];
    int i,j,len[3],count=0,k=0,a[100];
    scanf("%s",&y);
    scanf("%s",&h);
    scanf("%s",&c);
    for (i=0;i<strlen(y);i++){
        for (j=0;j<strlen(h);j++){
            if (y[i+j]==h[j]){
            count++;
            }
        }
        if (count==strlen(h))
        {
            k++;
            a[k]=i;
        }
        count=0;
    }
    if (k==0){
        printf("%s",y);
        return 0;
    }
    for (i=0;i<a[1];i++)
        printf("%c",y[i]);
        printf("%s",c);
        if (i==k)
           return 0;
        for (j=a[1]+strlen(h);j<strlen(y);j++){
            printf("%c",y[j]);
        }
    return 0;
}
int main()
{
	char string[256],substring[256],replacement[256];
	char *str,*sub;
	int a,n=0,b;
	scanf("%s%s%s",string,substring,replacement);
	sub=substring;
	a=strlen(substring);
	
	for(str=string;*str!='\0';str++)
	{
		if(*sub==*str)
		{
			if(*(sub+1)!='\0')
			{
				sub++;
			}
			else
			{
				str=str-a+1;
				n=1;
				break;
			}
		}
		else
		{
			sub=substring;
		}
	}
	
	if(n==0)
	{
		printf("%s",string);
		return 0;
	}
	
	sub=replacement;
	for(b=0;b<strlen(substring);b++)
	{
		*str=*sub;
		sub++;
		str++;
	}
	printf("%s",string);
	return 0;
}
int main()
{
	char a[256],b[256],c[256];
	int i,j,n;
	scanf("%s%s%s",a,b,c);
	n=strlen(b);
	int m;
	m=strlen(a);
	int q,k;
	for(i=0;i<m;i++)
	{
		if(a[i]==b[0])
		{
			k=1;
			for(j=i;j<i+n;j++)
				if(b[j-i]!=a[j])
					k=0;
			if(k)
			{	q=i;		
			break;
			}
		}
		k=0;
	}
	if(k)
	{
	for(i=0;i<q;i++)
		printf("%c",a[i]);
	printf("%s",c);

		for(i=q+n;i<m;i++)
		printf("%c",a[i]);
	}
	else
	{
		printf("%s",a);
	}return 0;	
}
// 13.2.cpp 
//


int main()
{
	char str1[258], str2[258], str3[258], ch[600];
	int len1, len2, len3, i = 0, j = 0;
	int m, n = 0;
	cin >> str1;
	cin >> str2;
	cin >> str3;
	len1 = strlen(str1);
	len2 = strlen(str2);
	len3 = strlen(str3);
	for (i = 0; i < len1; i++)
	{
		n = 0;
		m = i;
		if (str1[m] == str2[j])
		{
			n = 1;
			for (j = 0, m; j < len2; j++, m++)
			{
				if (str1[m] != str2[j])
				{
					n = 0;
					j = 0;
					break;
				}
			}
			if (n == 1)
			{
				m = i;
				for (i = 0; i < len1 + len3 - len2; i++)
				{
					if (i >= m && i < m + len3)
						ch[i] = str3[i - m];
					else
						if (i < m)
							ch[i] = str1[i];
						else
							ch[i] = str1[len2 + i - len3];
				}
				break;
			}
		}
	}
	if (n == 1)
		for (i = 0; i < len1 + len3 - len2; i++)
			cout << ch[i];
	else
		for (i = 0; i < len1; i++)
			cout << str1[i];
	return 0;
}
int main()
{
    char s[256],a[256],b[256];
    int i,n,f,t,j,k,m,l,p,q=0;
    gets(s);
    gets(a);
    gets(b);
    p=strlen(s);
    m=strlen(a);
    n=strlen(b);
    for(i=0;s[i]!='\0';i++){
       if(s[i]==a[0]){
       f=0;
          for(j=0;j<m;j++){
             if(s[j+i]!=a[j])  f=1;
             }
          if(f==0){
          t=i;
          if(t!=0){
             for(k=0;k<t;k++){
                printf("%c",s[k]);
                q=1;
                }
             }
          for(l=0;l<n;l++){
             printf("%c",b[l]);
             }
          if(s[m+t]!='\0'){
             for(k=m+t;k<p;k++){
                printf("%c",s[k]);
                }
                printf('\0');
                q=1;
             }
          if(q==1)  break;
       }
       if(q==1)  break;
       }
       if(q==1)  break;
       }
       if(q==0)  printf("%s",s);
    return 0;
}
int main()
{
	char word[2][256],chan[256];
	int i,j,len[2],result=1,wzy=0,weizhi;


	scanf("%s%s%s",word[1],word[0],chan);
	len[0]=strlen(word[0]);
	len[1]=strlen(word[1]);


	for(i=0;i<=len[1]-len[0];i++)
	{
		if(word[1][i]==word[0][0])
		{
			for(j=i+1;j<i+len[0];j++)
			{
				if(word[1][j]!=word[0][j-i])
				{
					result=0;
					break;
				}
			}
			if(result)
			{
				weizhi=i;
				wzy=1;
			}
			result=1;
		}
		if(wzy==1)
		{
			break;
		}
	}

	if(wzy==1)
	{
		for(i=weizhi;i<weizhi+len[0];i++)
		{
			word[1][i]=chan[i-weizhi];
		}
	}
	
	for(i=0;i<len[1];i++)
	{
		printf("%c",word[1][i]);
	}

	return 0;
}
void main()
{
	char a[100],b[100],c[100];
	gets(a);
	gets(b);
	gets(c);
	int i=0,j=0,n1=0,n2=0,k=0;
	while(b[i]!='\0')
	{
		i++;
		n1++;
	}
	i=0;
	while(c[i]!='\0')
	{
		i++;
		n2++;
	}

	for(i=0;a[i]!='\0';i++)
	{
		for(j=0;j<n1;j++)
		{
			if(a[i+j]!=b[j])
				break;
			if(j==n1-1)
			{
				for(j=0;j<i;j++)
					printf("%c",a[j]);
				printf("%s",c);
				for(j=i+n2;a[j]!='\0';j++)
					printf("%c",a[j]);
				k++;
				
			}
		}if(k!=0)break;
	}

if(k==0)printf("%s",a);


}
int main()
{
	char a[300],b[300],c[300];
	int i=0,j=0,len1,len2,len3,t=0,k;
	gets(a);
	gets(b);
	gets(c);
	len1=strlen(a);
	len2=strlen(b);
	len3=strlen(c);
		while(i<len1 && t<len2)
	{
		if(a[i]!=b[j])
		{
			i++;
			j=0;
			t=0;
		}
		else
		{
			i++;
			j++;
			t++;
		}
	}
		if(t>=len2)
		{
		for(j=0;j<i-t;j++)
	        printf("%c",a[j]);
		for(j=0;j<len3;j++)
			printf("%c",c[j]);
		for(j=i-t+len2;j<len1;j++)
			printf("%c",a[j]);
		}
		if(t<len2)
		{
			for(j=0;j<len1;j++)
				printf("%c",a[j]);
		}
	return 0;
}
int main()
{
	char a[N],b[N],c[N];
	gets(a);
	gets(b);
	gets(c);
	int i=0,x=0;
	while(i<strlen(a))
	{
		if(a[i]==b[0])
		{
			int j;
			for(j=0;j<strlen(b);j++)
			{
				if(a[i+j]!=b[j])
				{
					break;
				}
			}
			if(j==strlen(b)&&x==0)
			{
				printf("%s",c);
                x=1;
				i+=strlen(b);
			}
			else
			{
				printf("%c",a[i]);
				i++;
			}
		}
		else
		{
			printf("%c",a[i]);
			i++;
		}
	}
	return 0;
}
main()
{
	char a[257],b[257],c[257],d[257],*p;
	scanf("%s%s%s",a,b,c);
	p=strstr(a,b);
	if(p==NULL)
		puts(a);
	else{
	*p='\0';
	strcpy(d,a);
	strcat(d,c);
	strcat(d,p+strlen(b));
	puts(d);}
}
void main()
{
	int i,j,k,p;
 char s[100],c[100],a[100];
 gets(s);
 gets(c);
 gets(a);
 k=strlen(s);
 p=strlen(c);
 for(i=0;i<k;i++)
 {
	 j=0;
	 for(j=0;j<p;j++,i++)
	 {
		 if(s[i]!=c[j])
		 break;
	 }
	 if(j>p-1)
	 {
	  for(j=0;j<p;j++,i++)
      s[i-p]=a[j];
	  break;
	 }
 }
	 for(i=0;i<k;i++)
		 printf("%c",s[i]);
}
char * strpos(char string[], char substring[])
{
	char *p = string;
	char *temp = NULL;
	while(*p != '\0')
	{
		if (*p == substring[0])
		{
			temp = p;
			p++;
			int i;
			for (i = 1; i < strlen(substring); i++)
			{
				if (*p != substring[i])
				{	
					break;
				}
				p++;
			}
			if (i == strlen(substring))
				break;
			else
				p = temp + 1;
		}
		else
			p++;
	}
	return temp;
}
int main()
{
	char string[256], substring[256], replacement[256];
	cin.getline(string, 257);
	cin.getline(substring, 257);
	cin.getline(replacement, 257);
	char *p = strpos(string, substring);
	if (p != NULL)
	{
		int t = 0, count = 0;
		while (count != strlen(substring))
		{
			*p = replacement[t++];
			p++;
			count++;
		}
	}
	cout << string << endl;
	return 0;
}
int main()
{
    char s[101], a[101], b[101],copy[101],before[101],after[101];
    gets(s);
	gets(a);
	gets(b);

    int i=0,j;
    for(i;i<=(int)(strlen(s)-strlen(a));i++)
    {
            for(j=0;j<(int)(strlen(a));j++)
            {
                    copy[j]=s[i+j];
            }
            copy[j]='\0';
            if (strcmp(copy,a)==0)
			{
				for(j=0;j<i;j++)
				{
                    before[j]=s[j];
				}
				before[j]='\0';
				for(j=i+(int)strlen(a);j<(int)(strlen(s));j++)
				{
                    after[j-i-(int)strlen(a)]=s[j];
				}
				after[j-i-(int)strlen(a)]='\0';
				strcat(before,b);
				strcat(before,after);
				strcpy(s,before);
				break;
			}
	}
    puts(s);
	return 0;
}
int main()
{
	char s[256];
	char a[256];
	char t[256];
	char c;
	int i,ls,j,la,lt,g,word=0;
	scanf("%s",s);
	scanf("%s",a);
	scanf("%s",t);
	ls=strlen(s);
	la=strlen(a);
	lt=strlen(t);
	
	for(i=0;i<ls;i++){
		if(word==0){
			g=0;
			if(s[i]==a[0]){
				g++;
				for(j=i+1;j<i+la;j++){
					if(s[j]==a[g]){
						g++;
					}
				}
				if(g==la){
					word=1;
					for(j=i;j<i+la;j++){
						s[j]=t[j-i];
					}
				}
			}
		}
	}

	printf("%s",s);
	return 0;
}
int main()
{
	int i=0,j=0,k=0,s=0,a,b,c=0,m=0;
	char string[257],substring[256],replacement[256];
	gets(string);
	gets(substring);
	gets(replacement);
	a=strlen(string);
	b=strlen(substring);
	for(i=0;i<a;i++){
		k=0;
		if(string[i]==substring[0]){
			for(j=i;j<i+b;j++){
				if(string[j]==substring[j-i]) k++;
				else break;
			}
		}
		if(k==b){
			c=1;
			break;
		}
		m=i+1;
	}
	for(i=0;i<a;i++){

			if(i>=m&&i<b+m&&c==1){
				printf("%c",replacement[i-m]);
			}
			else {
				printf("%c",string[i]);
			}
	}
	return 0;
}