semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
int main()
{
	char s[100], a[100], b[100], ans[100], temp[100];
	int i, j, templ, tempans;
	gets(s);
	gets(a);
	gets(b);	
	templ=0;
	tempans=0;
	for (i=0;i<strlen(s);i++)
	{
		if (s[i] == ' ') 
		{
			temp[templ]='\0';
			if (strcmp(temp, a) == 0) 
			{
				for (j=0;j<strlen(b);j++) 
				{
					ans[tempans] = b[j];
					tempans++;
				}
			}
			else
			{
				for (j=0;j<templ;j++) 
				{
					ans[tempans] = temp[j];
					tempans++;
				}
			}
			ans[tempans]=' ';
			tempans++;
			templ = 0;
			continue;
		}
		temp[templ]= s[i];
		templ++;
	}
		temp[templ]='\0';
			if (strcmp(temp, a) == 0) 
			{
				for (j=0;j<strlen(b);j++) 
				{
					ans[tempans] = b[j];
					tempans++;
				}
			}
			else
			{
				for (j=0;j<templ;j++) 
				{
					ans[tempans] = temp[j];
					tempans++;
				}
			}
		ans[tempans] = '\0';
	printf("%s", ans);
	return 0;
}
void main()
{
	char string[100];
	char word[100][100],a[100],b[100];char *p[100];char *p1,*p2;
	int i,j,k,strl,al,bl;
	gets(string);
	gets(a);
	gets(b);
	p1=a;
	p2=b;
	strl=strlen(string);
	al=strlen(a);
	bl=strlen(b);
	j=0;k=0;
	for(i=0;i<strl;i++)
	   if(string[i]!=32)
		{
			word[j][k]=string[i];
			if(string[i+1]!=32)
				k++;
			else if(string[i+1]==32||string[i+1]=='\0')
			{
				word[j][k+1]='\0';
				k=0;
				j++;
			}
	   }
	for(i=0;i<j+1;i++)
		p[i]=word[i];
	for(i=0;i<j+1;i++)
		if(strcmp(p1,*(p+i))==0)
			p[i]=p2;
     for(i=0;i<j;i++)
	   printf("%s ",p[i]);
    printf("%s",p[j]);
}
int main()
{
	char ch[100],a[100],b[100],c[100][100];
	int i,n[100],k,m,j=0;
	n[0]=-1;
	gets(ch); 
	gets(a);
	gets(b);
    for (i=0;ch[i]!='\0';i++)
	{
		if (ch[i]==' ')
		{
			j++;
			n[j]=i;
			for (k=0,m=n[j-1]+1;k<i-n[j-1]-1&&m<i;k++,m++) c[j][k]=ch[m];	
		}
        continue;
	}
	for (i=n[j]+1;ch[i]!='\0';i++) c[j+1][i-1-n[j]]=ch[i];
	for (m=1;m<=j+1;m++) 
		if (strcmp(c[m],a)==0) strcpy(c[m],b);
    for (m=1;m<=j;m++) printf("%s ",c[m]);printf("%s",c[j+1]);
    
	return 0;
}
int main()
{
    char s[100],re[100],x[100],wd[50][100];
    int n,i,a=0,j=0,k,e,l,nc[100];
    gets(s);
    scanf("%s",re);
    scanf("%s",x);
    for(i=0;s[i]!='\0';i++){
       if(s[i]!=' '){
         wd[a][j]=s[i];
         j++;}
       if(s[i]==' '&&s[i+1]!=' '){
         nc[a]=i;
         wd[a][j]='\0';
         a++;
         j=0;}
       }
    l=strlen(s)-nc[a-1];
    wd[a][l-1]='\0';
    for(i=0;i<=a;i++){
       if(strcmp(re,wd[i])==0){
         strcpy(wd[i],x);}
    }
    for(i=0;i<a;i++){
       printf("%s ",wd[i]);
       }
    printf("%s",wd[a]);
    int t;
    scanf("%d",&t);
    return 0;
}
int main()
{
    char a[105],b[105],s[105],c[105][105];
    int i,len,startp,endp,cur_c,k;
    gets(s);
    cin>>a>>b;
	len=strlen(s);
	startp=0;endp=1,cur_c=0;
	while(endp<=len)
	{
	    if(s[endp]==' ' || s[endp]=='\0')
	    {
		    for(i=startp,k=0;i<=endp-1;i++,k++)
		        c[cur_c][k]=s[i];
		    c[cur_c][k+1]='\0';
			cur_c++;
		    startp=endp+1;
		    endp=startp+1;
		}
		else endp++;
	}
	for(i=0;i<cur_c;i++)
	    if(!strcmp(a,c[i]))strcpy(c[i],b);
	cout<<c[0];
	for(i=1;i<cur_c;i++)
	    cout<<' '<<c[i];
	cout<<endl;
}
void main()
{
	char s[30][20]={0};
	char a[101]={0}, b[101]={0};
	char ch, (*p)[20];
	int i=0;
	ch=0;
    p=s;
	while (ch!='\n')
	{
		scanf("%s",p+i++);
	ch=getchar();
	}

	gets(a);
	gets(b);

	p=s;
	while(strcmp(*p,"")!=0)
	{
		if (strcmp(*p,a)==0) printf("%s",b);
		else printf("%s", *p);
		p++;
		if (strcmp(*p,"")!=0) printf(" ");
	}

}
const char flag=-128,noo=-126;
int main(){
	int i,l1,l2,l;
	char s1[101],s2[101],s[1001],*p;
	gets(s);gets(s1);gets(s2);
	l1=strlen(s1);l2=strlen(s2);l=strlen(s);
	while ((p=strstr(s,s1))!=NULL){
		/*if(l2>l1){
			for (i=l-1;&s[i]>=p;i--) s[i+l2-l1]=s[i];
			l+=l2-l1;s[l]=0;
		}
		for (i=0;i<l2;i++,p++) *p=s2[i];
		if(l2<l1){
			for (;*(p+l1-l2)!=0;p++) *p=*(p+l1-l2);
			*p=0;l-=l1-l2;
		}*/
		if(p!=s&&*(p-1)!=' ') {*p=noo;continue;}
		*p=flag;
		for (p++;*(p+l1-1)!=0;p++) *p=*(p+l1-1);
		*p=0;l-=l1-1;
	}
	//puts(s);
	//for (i=0;i<l;i++) printf("%d ",s[i]);
	for (i=0;i<l;i++)
		if(s[i]==flag) printf("%s",s2);
		else if(s[i]==noo) printf("%c",s1[0]);
		else printf("%c",s[i]);
	printf("\n");
	return 0;
}
int main()
{
char s[100],a[100],b[100],r[50][20]={0},t[100];
int i=0,j,c=0,l;
gets(s);
gets(a);
gets(b);
l=strlen(s);
while(i<=l-1)
{j=0;
c++;
while(s[i]!=' '&&i<=l-1)
{r[c][j]=s[i];
j++;
i++;}
i++;}
for(i=1;i<=c-1;i++)
{if(strcmp(r[i],a)==0)
{printf("%s ",b);}
else 
{printf("%s ",r[i]);}}
if(strcmp(r[c],a)==0)
{printf("%s",b);}
else 
{printf("%s",r[c]);}
return 0;
}
void main()
{
	char sen[100],targ[100],subs[100];
	gets(sen);	gets(targ);	gets(subs);	
	char *p,*q,*c,*t;			//c points to targ, p and q points to sen
	int flag=0;
	p=sen;
	c=targ;
	char output[100]={0};
	while(p<sen+strlen(sen)){
		c=targ;
		while( *p++ != targ[0] )
			;
		q=p-1;
		if( q!=sen && *(q-1) != ' ')
			continue;
		p--;
		while( *c && *p++ == *c++  )
			;
		if( (*p==' ' || *p==0) && *c==0)
			flag=1;
		if(flag){
			t=p;
			output[0]=0;
			strncpy(output,sen,q-sen);
			output[q-sen]=0;
			strcat(output,subs);
			strcat(output,t);
			strcpy(sen,output);
			p=sen;
		}
		
	}
	if(!flag){
		puts(sen);exit(0);
	}
			//A0 + SUB +A1, c->betw SUB & A1,q->betw A0 & SUB
	
	puts(output);

}
int main()
{
	char s[100],a[100],b[100],c[100][100];
	int i,len,n=0,j=0,z=0,len1,len3,d;
	gets(s);
	gets(a);
	gets(b);
	len=strlen(s);
	for(i=0;i<len;i++)
	{
		if(s[i]!=' ')
		{
			c[n][j]=s[i];
			j++;
		}else{
			c[n][j]='\0';
			n++;
			j=0;
		}
	}
	c[n][j]='\0';
	len1=strlen(a);
	for(i=0;i<=n;i++)
	{
		z=0;
		d=0;
		len3=strlen(c[i]);
		for(j=0;j<len3&&j<len1;j++)
		{
			if(c[i][j]==a[z]){
				d++;
				z++;
			}
		}
		    if(d==len1){
			    strcpy(c[i],b);
			}
	}
	for(i=0;i<n;i++)
	{
		printf("%s ",c[i]);
	}
	printf("%s",c[n]);
	return 0;
}
void main()
{
	char a[100][20],m,b[20],c[20];
	int i,j;
	for(i=0;;i++)
	{
		scanf("%s",a[i]);
		if(getchar()=='\n')
			break;
	}
	    gets(b);
	    gets(c);
	for(j=0;j<=i;j++)
	{
		if(strcmp(a[j],b)==0)
		{
			strcpy(a[j],c);
					}
	}
	
	

	for(j=0;j<i;j++)
		printf("%s ",a[j]);
	printf("%s",a[i]);

}
int main(){
	char str[1000],strd[20],strb[20];
	char zfc[50][200];

	gets(str);

	int i,k;
	int j=0,n=0;

	for(i=0;str[i]!='\0';i++)
	{
		
		if(str[i]==' ')
		{
		    str[i]='\0';
			strcpy(zfc[n],(str+j));
			n++;
			j=i+1;
		}
	}
	strcpy(zfc[n],(str+j));
    n++;

	gets(strb);
	gets(strd);

	for(k=0;k<n;k++)
	{

	
		if(strcmp(strb,zfc[k])==0){
			strcpy(zfc[k],strd);
			
		}
	}

	printf("%s",zfc[0]);
	for(i=1;i<n;i++)
	{
		printf(" %s",zfc[i]);
	}

	return 0;
}
int main()
{
	char a[20][20],d[100],b[20],c[20];
	int n,j=0,k=0,flag=0,x;
	gets(d);
	gets(b);
	gets(c);
	x=strlen(c);
	for(;x<20;x++) c[x]='\0';
	n=strlen(d);
	for(int i=0;i<n;i++)
	{
		if(d[i]!=' ') a[j][k++]=d[i];
		else
		{
			for(;k<20;) a[j][k++]='\0';
			flag=flag+1;
			j++;
			k=0;
		}
	}
	for(int m=0;m<20;m++)if(a[flag][m]==d[n-1]) k=m+1;
	for(;k<20;) a[flag][k++]='\0';
	for(int p=0;p<20;p++) if(strcmp(a[p],b)==0) strncpy(a[p],c,20);
	printf("%s",a[0]);
	for(int l=1;l<flag+1;l++) printf(" %s",a[l]);
	return 0;
}
int main ()
{   
	struct point
	{
		char w[20];
	}sen[40];
	int i,j;
	for(i=0;i<40;i++)
	{
		for(j=0;j<20;j++)
		{
			sen[i].w[j]='\0';
		}
	}
	char a[100];
	char from[20],to[20];
	gets(a);
	gets(from);
	
	gets(to);
	int e;
	e=strlen(to);
	to[e]=' ';
	to[e+1]='\0';
	int b;
	b=strlen(a);
	int k,p,q;
	int num=0;
	for(i=0,j=0;i<=b;i++)
	{   int m;
		if(a[i]==' ')
		{
			for(k=i;;k--)
			{
				if(k==0)
				{
					m=k;
					break;
				}
				else if(a[k-1]==' ')
				{
					m=k;
					break;
				}
			}
			for(p=m,q=0;p<i;p++,q++)
			{
				sen[j].w[q]=a[p];
				sen[j].w[q+1]=' ';
			}
			
			j++;
			num++;
		}
		else if(i==b)
		{
			for(k=i;;k--)
			{
				if(k==0)
				{
					m=k;
					break;
				}
				else if(a[k-1]==' ')
				{
					m=k;
					break;
				}
			}
			for(p=m,q=0;p<i;p++,q++)
			{
				sen[j].w[q]=a[p];
				sen[j].w[q+1]=' ';
			}
			j++;
			num++;
		}
	}
	int judge;
	for(i=0;i<=num;i++)
	{   
		judge=1;
		for(j=0;from[j]!='\0';j++)
		{
			if(sen[i].w[j]!=from[j])
			{
				judge=0;
				break;
			}
		}
		if(judge==1)
		{
			strcpy(sen[i].w,to);
			
		}
	}
	for(i=0;;i++)
	{
		if(sen[num-1].w[i]==' ')
		{
			sen[num-1].w[i]='\0';
			break;
		}
	}
    
	
	
	for(i=0;i<=num+1;i++)
	{
		printf("%s",sen[i].w);
	}
	return 0;
}
int main()
{
    char n[100][1000];
    int i,j,m=0,l,k=0;
    char w[1000],x[1000],y[1000];
    gets(w);
    j=strlen(w);
    for(i=0;i<j;i++)
       {if(w[i]!=' ')
          {n[m][k]=w[i];k++;}
        else{n[m][k]='\0';m++;k=0;}
       }
    n[m][k]='\0';m++;
    scanf("%s",x);
    scanf("%s",y);
    for(i=0;i<m;i++)
       if(strcmp(n[i],x)==0)
         strcpy(n[i],y);
    for(i=0;i<m;i++)
       if(i==m-1)
       printf("%s",n[i]);
       else{printf("%s ",n[i]);}     
}
char sentence[100][100],a[100],b[100];
	
int main() {
	int cnt=1;
	while (scanf("%s",sentence[cnt])!=EOF) cnt++;
	cnt--;
	memcpy(a,sentence[cnt-1],sizeof(sentence[cnt-1]));
	memcpy(b,sentence[cnt],sizeof(sentence[cnt]));
	for (int i=1;i<cnt-1;i++) {
		if (i!=1) printf(" ");
		if (strcmp(sentence[i],a)==0) printf("%s",b);
			else printf("%s",sentence[i]);
	}
	printf("\n");
	return 0;
}
typedef struct {
	char str[100];
	int length;
} WORD;

WORD words[100];

int main()
{
	char str[100];
	char a[100], b[100];
	
	int i, j, k;
	int numOfWords;
	
	gets(str);
	gets(a);
	gets(b);
	
	// printf("%s %s %s\n", str, a, b);
	
	//printf("length of string = %d\n", strlen(str));
	
	for (i = 0, j = 0, k = 0; i < strlen(str); i++)
	{
		if (str[i] != ' ') 
		{
			words[j].str[k++] = str[i];
		}
		else
		{
			words[j++].length = k - 1;
			k = 0;
		}
	}
	
	numOfWords = j + 1;
	
	//printf("number of words = %d\n", numOfWords);
	
	for (i = 0; i < numOfWords; i++)
	{
		if (strstr(words[i].str, a) && strlen(words[i].str) == strlen(a))
		{
			printf("%s", b);
		}
		else
		{
			printf("%s", words[i].str);
		}
		
		if ( i != numOfWords - 1)
			printf(" ");
	}
	
	
	return 0;	
}
int main() 
{
    char Sen[200],word[200],exchange[200],temp[200];
	gets(Sen);
	gets(word);
	gets(exchange);
	int n=strlen(Sen),i;
	int m;
	m=0;
	for(i=0;i<n;i++){
		if(Sen[i]!=' '){
			temp[m]=Sen[i];
			m++;
		}
		else{
			temp[m]='\0';
			if(strcmp(temp,word)==0)
				printf("%s ",exchange);
			else
				printf("%s ",temp);
			m=0;
		}
		if(i==n-1){
			temp[m]='\0';
			if(strcmp(temp,word)==0)
				printf("%s\n",exchange);
			else
				printf("%s\n",temp);
			m=0;
		}

	}
}
int main(){
	char str[101],a[100][100],b[100],c[100],*ps;
	int i,k,flag=0,j;
	gets(str);
	gets(c);
	gets(b);
	i = 0; j = 0;
	for(ps=str;*ps!='\0';ps++){
		if(*ps != ' '){
			a[i][j] = *ps;
			j++;
		}
		else if(*ps == ' '){
			a[i][j] = '\0';
			j = 0;
			i++;
		}
	}
	a[i][j] = '\0';
	k=i;
	for(i=0;i<=k;i++){
		if(strcmp(a[i],c)==0){
			strcpy(a[i], b);
			flag=1;
		}
	}
	if(flag==1){
	    for(i=0;i<k;i++){
		    printf("%s ",a[i]);
		}
	    printf("%s",a[k]);
	}
	else if(flag==0){
		printf("%s",str);
	}
	return 0;
}
int main()
{
	char zfc[100],zsz[100][100];
	char word_a[100],word_b[100];
	
	gets(zfc);
	scanf("%s\n%s",word_a,word_b);
	
	int word_i = 0, word_j = 0;
	int i,n;
	n=strlen(zfc);
	for(i=0;i<n;i++){
		if (zfc[i] == ' ' || zfc[i] == ',') {
			
			zsz[word_i][word_j] = '\0';
			word_i++;
			word_j = 0;

		} else {
			zsz[word_i][word_j] = zfc[i];
			word_j++;

			if (i == n-1) {
				zsz[word_i][word_j] = '\0';
				word_i++;
			}
		}
	}
    int j,a[10],m=0,k;
	for(j=0;j<i;j++){
		if(strcmp(zsz[j],word_a)==0){
			a[m]=j;
			m++;
			}
	}
	for(k=0;k<m;k++){
		strcpy(zsz[a[k]],word_b);
	}
	for(j=0;j<word_i;j++){
		if(j!=word_i-1){
			printf("%s ",zsz[j]);
		}
		else
			printf("%s",zsz[j]);
	}
	
    return 0;
}
int main()
{
	char s1[100],s2[100],s3[100],copy[100][100];
	gets(s1);
	gets(s2);
	gets(s3);

	int i,j,k;
	j=k=0;
    for (i=0;i<strlen(s1);i++){
		copy[j][k]=s1[i];
		if (s1[i+1]==' '||s1[i+1]=='\0'){
			copy[j][k+1]='\0';
			k=0;
			j++;
			i++;
			continue;
		}
		k++;
	}

	for (k=0;k<j;k++){
		if ((strcmp(copy[k],s2))==0){
			strcpy(copy[k],s3);
		}
	}
	printf("%s",copy[0]);
	for (k=1;k<j;k++){
		printf (" %s",copy[k]);
	}

	return 0;
}
int main()
{
	int length_s,length_a,length_b,i,j,k;
	char s[128],a[128],b[128];
	gets(s);
	gets(a);
	gets(b);
	length_s=strlen(s);
	length_a=strlen(a);

	for(i=0;i<length_s;i++)
	{
		j=0;		
		if( s[i]==a[j] && (i==0 || s[i-1]==' ')   )
		{
			k=i;
			while(s[i]==a[j] && s[i]>0)
			{
				j++;
				i++;				
			}
			
			if(j==length_a)
			{
				printf("%s",b);
				i--;
			
			}
			
			else 
			{
				while(k<=i)
				{
					printf("%c",s[k]);
					k++;
				}
			}
			
		}
		else 
			printf("%c",s[i]);
	}
	
	return 0;
}
int main()
{
	char str[100][100],str1[100],str2[100],(*p)[100];
	int i,j,k;
	for(i=0;;i++)
	{scanf("%s",str[i]);k=i;
	if(getchar()=='\n') break;}
    p=str;
	gets(str1);
	gets(str2);
    for(i=0;i<=k;i++)
	{if(strcmp(*(p+i),str1)==0) strcpy(*(p+i),str2);}
	for(i=0;i<=k;i++)
	{if(i<k)printf("%s ",*(p+i));
	else printf("%s",*(p+i));}
}
int change(int);

const int N=100+1;
char s[N],a[N],b[N],c[N];
int la=0,ls=0;

int main()
{
	int p=0;
	cin.getline(s,N);
	cin>>a>>b;
	la=strlen(a);
	ls=strlen(s);
	if (s[p]==a[0]) p=p+change(p);
	while (p<ls)
	{
		if ( (s[p]==a[0]) && (s[p-1]==' ') ) p=p+change(p);
		else 
		{
			cout<<s[p];p++;
		}
	}
	cout<<endl;
	return 0;
}


int change(int p)
{
	int i,j;
	for (i=0;i<la;i++)
		if ( s[p+i] != a[i] ) break;
	if ( (i==la) && ( s[p+la]==' ' || s[p+la]=='\0') )
	{
		cout<<b;return i;
	}
	for (j=0;j<i;j++)
		cout<<s[p+j];
	return i;
}
int main()
{
	int n=0,i,k,x,h=0;
	char a[100],b[10],c[10];
	gets(a);gets(b);gets(c);
	x=strlen(b);




	for(i=0;i<x;i++)
	{
		if(a[i]!=b[i])break;
		h++;
	}
	if(h==x)
	{
		for(i=0;i<x;i++)a[i]='0';
		n=1;
	}




	h=0;
	for(i=1;a[i+2]!='\0';i++)
	{
		h=0;
		if(a[i]==' ')
			for(k=0;k<x;k++)
			{
				if(a[i+k+1]!=b[k])break;
				h++;
			}
		if(h==x)
			for(k=0;k<x;k++)a[i+k+1]='0';
	}



	if(n)
	{
		printf("%s",c);
		for(i=x;a[i]!='\0';i++)
		{
		   if(a[i]>='A'&&a[i]<='z')printf("%c",a[i]);
		   else if(a[i]=='0')continue;
		   else 
		   {
			if(a[i]==' '&&a[i+1]=='0')printf(" %s",c);
			else printf(" ");
		   }
		}
	}



	else
	for(i=0;a[i]!='\0';i++)
	{
		if(a[i]>='A'&&a[i]<='z')printf("%c",a[i]);
		else if(a[i]=='0')continue;
		else
		{
			if(a[i]==' '&&a[i+1]=='0')printf(" %s",c);
			else printf(" ");
		}
	}
	return 0;
}
char m[110][110];

int main()
{
	char s[110],a[110],b[110];
	int num;
	int i,j,len;

	gets(s);
	scanf("%s%s",a,b);
	num=0;
	for(i=0;s[i]!=' ';i++)
		m[0][i]=s[i];
	m[0][i]='\0';
	num++;
	i++;
	len=strlen(s);
	while(s[i]!='\0')
	{
		j=0;
		while(s[i]!=' '&&s[i]!='\0')
		{
			m[num][j++]=s[i++];
		}
		m[num++][j]='\0';
		i++;
		if(i>=len)break;
	}
	
	for(i=0;i<num;i++)
		if(strcmp(a,m[i])==0)
		{
			strcpy(m[i],b);
			len=strlen(b);
			m[i][len]='\0';
		}
	for(i=0;i<num-1;i++)
		printf("%s ",m[i]);
	printf("%s\n",m[num-1]);
	return 0;
}
void main()
{
	int t=0;
	char *p;
	char *a,*b,*c;
	p=(char*)malloc(200*sizeof(char));
	a=(char*)malloc(100*sizeof(char));
	b=(char*)malloc(100*sizeof(char));
	gets(p);
	gets(a);
	gets(b);
	c=p;
	while(*p!='\0')
	{
		if(*p!=' ')p=p+1;
		else
		{
			*p='\0';
			p=p+1;
			if(strcmp(c,a)==0)printf("%s ",b);
			else printf("%s ",c);
			c=p;
		}
	}
	do
	{
		if(strcmp(c,a)==0)printf("%s",b);
			else printf("%s",c);
			t=1;
	}while((*p=='\0')&&(t=0));
}
int main(){
	char zfc[100][100],bth[100],th[100],s[100];
	int i,e,j=0,t=0,p;
	gets(s);
	gets(bth);
	gets(th);
	e=strlen(s);
	for(i=0;i<100;i++){
		for(p=0;p<100;p++){
			zfc[i][p]=0;
		}
	}
	for(i=0;i<e;i++){
		if(s[i]!=' '){
		   zfc[j][t]=s[i];
		   t++;
		}
		else{
			j++;
			t=0;
		}
	}
    
	for(i=0;i<j;i++){
		if(strcmp(zfc[i],bth)==0){
			printf("%s ",th);
		}
		else{
			printf("%s ",zfc[i]);
		}
	}
	if(strcmp(zfc[j],bth)==0){
		printf("%s",th);
	}
	else{
		printf("%s",zfc[j]);
	}
	return 0;
}
int main()
{
    char sen[20][100],ori[100],exc[100],c;     //??????sen ,???????ori,a???????exc
    int i=0,j;                                 //????
    do
    {
        cin>>sen[i];                           //????
        i++;
    }while((c=getchar())!='\n');               //????????
    cin>>ori;                                    
    cin>>exc;
    for(j=0;j<i;j++)
    {
        if(strcmp(sen[j],ori)==0)              //?????????????????????a
         strcpy(sen[j],exc);                   //????????????????????????b??
    }
    for(j=0;j<i-1;j++)
    {
        cout<<sen[j]<<' ';                     //????????
    }
    cout<<sen[i-1];
    return 0;

}
int main()
{
	char *s,*a,*b,*p,*q;
	s=(char *)malloc(100);
	a=(char *)malloc(100);
	b=(char *)malloc(100);
	gets(s);
	gets(a);
	gets(b);
	q=s;
	for(p=s;;p++)
	{
		if(*p=='\0')
		{
			if(strcmp(q,a)==0)
			{
				printf("%s",b);
				break;
			}
			printf("%s",q);
			break;
		}
		if(*p==' ')
		{
			*p='\0';
			if(strcmp(q,a)==0)
				printf("%s ",b);
			else 
				printf("%s ",q);
			q=p+1;
		}
	}
	return 0;
}
int main()
{   
	char a[100],b[100],c[100];int i,j,k;
	cin.getline(a,100,'\n');
	cin.getline(b,100,'\n');
	cin.getline(c,100,'\n');
      int l1=strlen(a),l2=strlen(b),l3=strlen(c);
	  for(i=0; ;i++)
		  if(a[i]==' ') break;
	   for(j=0;j<=i-1;j++)
		  {
			  if(a[j]!=b[j])
				  {
					  for(k=0;k<=i-1;k++)
					  cout<<a[k];
					  break;
			  }
			  if(j==i-1)
				  cout<<c;
	   }


		 for(i=0;i<=l1-1;i++)
		 {
			 if(a[i]!=' ')
				 continue;
			 for(j=0;j<=l2-1;j++)
			 {
				 if(a[i+j+1]!=b[j])
				 {
					 cout<<" ";
					 for(k=i+1; ;k++)
					 {
						 if(a[k]==' '||k==l1)
							 break;
						 else
							 cout<<a[k];
					 }
					 break;
				 }
				 if(j==l2-1)
				 {
					 cout<<" "<<c;
					 
				 }
			 }
		 }
		 return 0;
}
int main()
{
    char string[300];
    
    gets(string);
    char a[200],b[200];
    scanf("%s %s", a, b);
   
   char word[200][200];
    int n1,n2,i,k;
    int m=0;
    int p=0;
    n1=strlen(string);
    for(i=0;i<n1;i++)
    {
                     if(string[i]==' ')
                     {
                                     m++;
                                     p=0;
                     }
                     else
                     {
                     word[m][p]=string[i];
                     p++;
                     }
                     
    }
   
    if(strcmp(word[0],a)==0)
    printf("%s", b);
    else
    printf("%s", word[0]);
    
    for(k=1;k<=m;k++)
    {
                   if(strcmp(word[k],a)==0)
                   printf(" %s", b);
                   else
                   printf(" %s", word[k]);
    }
  
    return 0;
}
void main()
{
	char s[100],a[100],b[100];
	char *p1,*p2,*p3,*p4;
	int n1,n2,n3,flag=1;
	gets(s);
	gets(a);
	gets(b);
	p1=s;
	p2=a;
	p3=b;
	n1=strlen(s);
	n2=strlen(a);
	n3=strlen(b);
	while(p1<s+n1)
	{
		p2=a;
		p3=b;
		if(isalpha(*p1))
		{
			if(flag)
			{
				flag=0;
				for(p4=p1;p2<a+n2;p4++,p2++)
					if(*p4!=*p2)
						break;
				if((p2-a)==n2)
				{
					for(;p3<b+n3;p3++)
						printf("%c",*p3);
					p1=p1+n2;
				}
				else
				{
					for(;isalpha(*p1);p1++)
						printf("%c",*p1);
				}
			}
		}
		else
		{
			printf(" ");
			flag=1;
			p1++;
		}
	}
}
main()
{
	int i,j,k,m=0,n,l1,l2,l3,t;
	char aa[100]={0},b[100],c[100];
	char pp[100][100]={0};
	gets(aa);
	gets(b);
	gets(c);
	l1=strlen(aa);
	l2=strlen(b);
	l3=strlen(c);
	for (i=0;m<l1;i++)
	{
         for (j=0;;j++)
		 {
			 pp[i][j]=aa[m+j];
			 if (aa[m+j]==' '||aa[m+j]==NULL)
				 break;
		 }
		 m+=j+1;
	}
	for (k=0;k<=i;k++)
	{
		for (t=0;t<l2;t++)
		{
			if (pp[k][t]!=b[t])
				break;
		}
		if (t==l2)
		{
			for (t=0;t<=l2;t++)
			     pp[k][t]=0;
			strcpy(pp[k],c);
			if (k!=i-1)
				pp[k][l3]=' ';
		}
	}
	for (k=0;k<=i;k++)
		printf("%s",pp[k]);
}
main()
{
 int i,j,m,n;
 char s[100],a[100],b[100]; 
 gets(s);
 gets(a);
 gets(b);
 n=strlen(s);
 m=strlen(a);
 for(i=0;i<=n-1;i++)
 {
  if(i==0&&s[0]==a[0])
  {
   for(j=1;j<=m-1;j++)
	if(s[j]!=a[j]) 
	break;
	if(j==m&&s[m]==' ')
	{
	 printf("%s",b);
	 i=i+m;
	}
   }
   if(s[i]==' '&&s[i+1]==a[0])
   {
	 for(j=1;j<=m-1;j++)
	  if(s[i+j+1]!=a[j]) break;
	  if(j==m&&(s[i+j+1]==' '||s[i+j+1]=='\0'))
	  {
		printf(" %s",b);
		i=i+m+1;
	  }
	 }
	 if(s[i]!='\0') 
		 printf("%c",s[i]);
 }
 }
int main(int argc, char* argv[])
{
	char a[101],t[101];
	char b[101];
	char c[101];
	gets(a);
	gets(b);
	gets(c);
	int found=0,i,j;
	memset(t,'\0',sizeof(t));
	for(i=0,j=0;a[i-1]!='\0';i++,j++)
	{ 		
		if(a[i]!=' '&&a[i]!='\0')
		{
			t[j]=a[i];
		}
		if(a[i]==' '||a[i]=='\0')
		{
			t[j+1]='\0';
			if(strcmp(t,b)==0)
			{
				strcpy(t,c);
			}
			if(found++)
			{
				printf(" ");
			}
				printf("%s",t);
				j=-1;
			memset(t,'\0',sizeof(t));
		}
		
	}	
	return 0;
}
void main()
{
	char a[100],b[100],c[100],d[200];int l1,l2,l3,i,j,k=0;
	gets(a);
	scanf("%s%s",b,c);
    l1=strlen(a);l2=strlen(b);l3=strlen(c);
	for(i=0;i<l1;i++)
	{
		if(a[i-1]==' '||i==0)
		{
			for(j=0;j<l2;j++)
			if(a[i+j]!=b[j]) break;
			if(j==l2)
			{for(j=0;j<l3;j++,k++)
			d[k]=c[j];
			i=i+l2-1;}
			else {d[k]=a[i];k++;}
		}
		else  {d[k]=a[i];k++;}
	}
	d[k]='\0';
    printf("%s",d);
}
int main()
{
	char a[1000],b[1000];
	char sold[1000],snew[1000];
	int i,j,k,l;
	gets(a);
	gets(sold);
	gets(snew);
	for(i=0;i<strlen(a);i++)
	{
		k=0;
		for(j=i;j<i+strlen(sold);j++)
		{
			if(i==strlen(a)-strlen(sold))
				if(a[i-1]!=' ') break;
			if(i!=0&&i!=strlen(a)-strlen(sold))
				if(a[i+strlen(sold)]!=' '||a[i-1]!=' ') break;
			if(a[j]!=sold[k++]) break;
		}
		if(j==i+strlen(sold))
		{
			for(k=0;k<500;k++)
				b[k+i+strlen(snew)]=a[k+i+strlen(sold)];
			for(k=0;k<i;k++)
				b[k]=a[k];
			l=0;
			for(k=0;k<strlen(snew);k++)
				b[i+k]=snew[l++];
			for(k=0;k<1000;k++)
				a[k]=b[k];
			i=i+strlen(snew)-1;
		}
	}
	puts(a);
	return 0;
}
char yuan[100000],yao[110],wei[110];
int yuanlen,yaolen,weilen;

int main()
{
	char *s;
	int i,j;
	gets(yuan);
	gets(yao);
	gets(wei);
	s=strstr(yuan,yao);
	if(s==NULL||(s[-1]!=' '&&s!=yuan))
	{
		puts(yuan);
		return 0;
	}
	yuanlen=strlen(yuan);
	yaolen=strlen(yao);
	weilen=strlen(wei);
	while(s!=NULL)
	{
		if(yaolen==weilen)
		{
			for(i=0;i<yaolen;i++)
			{
				s[i]=wei[i];
			}
		}
		if(yaolen>weilen)
		{
			for(i=0;i<weilen;i++)
				s[i]=wei[i];
			while(s[i+yaolen-weilen]!=0)
			{
				s[i]=s[i+yaolen-weilen];
				i++;
			}
			s[i]=0;
		}
		if(yaolen<weilen)
		{
			for(i=yuanlen-1;i>yaolen-1;i--)
				s[i+weilen-yaolen]=s[i];
			for(i=0;i<weilen;i++)
				s[i]=wei[i];
		}
		s+=weilen;
		s=strstr(s,yao);
	}


	puts(yuan);
	return 0;

}
int main(){
	char s[200],a[100],b[100],w[100][20];
	int len;
	gets(s);
	gets(a);
	gets(b);
	len=strlen(s);
	int i,j,n=0,k=0;              
	for(i=0;i<=len;i++){
		if(s[i]==32){
			w[n][k]='\0';
			n++;
			k=0;
		}
		else{
			w[n][k]=s[i];
			k++;
		}
	}
	for(j=0;j<=n;j++){
		if(strcmp(w[j],a)==0){
			strcpy(w[j],b);
		}
		if(j==0){
		    printf("%s",w[j]);
		}
		else{
			printf(" %s",w[j]);
		}
	}
	return 0;
}
int main()
{
    int i,k;
    char a[100][100],b[100],c[100];
    int n=0;
    for(i=0;i<100;i++)
    {
        scanf("%s",a[i]);
        n++;
        k=getchar();
        if(k=='\n')
            break;
    }
    scanf("%s",b);
    scanf("%s",c);
    for(i=0;i<n;i++)
    {
        k=strcmp(b,a[i]);
        if(k==0)
            strcpy(a[i],c);
    }
    for(i=0;i<n-1;i++)
    {
        printf("%s ",a[i]);
    }
    printf("%s",a[n-1]);
}
/*
 * 1000012746_30_3.cpp
 *
 *  Created on: 2010-11-6
 *      Author: dyj
 *      Description:???????????????????<=100??
 *                  ???????????????????????????????????
 *                  ????????????????????????????????
 *
 */

int main(){
	char a[101],b[101],c[101],d[10001];
	cin.getline(a,101);
	cin>>b;
	cin>>c;
	int la=strlen(a);
	int lb=strlen(b);
	int lc=strlen(c);
	int i,j=0,k,num;
	for(i=0;i<la;i++){//???????????????lb???????
		for(k=0,num=0;k<lb;k++){
			if(a[i]==b[k])
				num++;
			i++;
		}//?num?????????
	   if(((num==lb)&&(a[i-k-1]==' '))||((num==lb)&&(i==k))){//??????????????
		   i=i-1;
		   for(k=0;k<lc;k++){
			   d[j]=c[k];
			   j++;
		   }//????c??
	   }
	   else {
		   i=i-k;
		   d[j]=a[i];
		   j++;
	   }//??????a

	}
	cout<<d<<endl;//???????d
	return 0;//????
}