int main()
{
 char str1[100],word1[100],word2[100];
 int n=0;
 int i,j;
 gets(str1);
 scanf("%s %s",word1,word2);
 for(i=0;i<(int)(strlen(str1));i++){
  for(j=i;j<i+(int)(strlen(word1));j++){
  if(str1[j]!=word1[j-i])  break;
  n=n+1;}
  if(i==0&&n==(int)(strlen(word1))){
	  printf("%s ",word2);
	  i=i+(int)(strlen(word1));}
  else if(n==(int)(strlen(word1))&&(str1[i+n]==32||str1[i+n]=='\0')&&str1[i-1]==32){
  printf("%s ",word2);
  i=i+(int)(strlen(word1));}
  else printf("%c",str1[i]);
 n=0;}
return 0;
}


char s[1000];
char a[101];
char b[101];
char buf[101];

int main(){
	unsigned int i;
	int index;
	gets(s);
	scanf("%s",a);
	scanf("%s",b);
	index=0;
	for(i=0;i<strlen(s);i++){
		if(s[i]==' ' || (i==strlen(s)-1)){
			if(i==strlen(s)-1)
				buf[index++]=s[i];
			buf[index]='\0';
			index=0;
			if(!strcmp(buf,a)){
				printf("%s",b);
			}
			else{
				printf("%s",buf);
			}
			if(i!=strlen(s)-1){
				printf(" ");
			}
		}
		else{
			buf[index++]=s[i];
		}
	}
	return 0;
}


int main()
{
	char s[101];
	char a[101];
	char b[101];
	int la, lb; /* Length of string a,b */
	char *p; /* position */
	char t[101];
	char *ss; /* position in s move right one-way */

	gets(s);
	scanf("%s", a);
	scanf("%s", b);
	la = strlen(a);
	lb = strlen(b);
	ss = s;
	while ((p=strstr(ss, a))!=NULL) {
		if ((p==s||*(p-1)==' ')&&(*(p+la)==' ')) {
			strcpy(t, p+la+1);
			strcpy(p, b);
			*(p+lb) = ' ';
			strcpy(p+lb+1, t);
		}
		if ((p==s||*(p-1)==' ')&&(*(p+la)=='\0')) {
			strcpy(p, b);
			*(p+lb) = '\0';
		}
		ss = p + la + 1;
	}
	puts(s);

	return 0;
}


void main()
{
	char *s,*a,*b,*c,*e;
	s=(char *)malloc(101*sizeof(char));
	a=(char *)malloc(101*sizeof(char));
	b=(char *)malloc(101*sizeof(char));
	c=(char *)malloc(101*sizeof(char));
	gets(s);
	gets(a);
	gets(b);
	e=s+strlen(s);
	for(;;)
	{
		sscanf(s,"%s",c);
		if(strcmp(a,c)==0) printf("%s",b);
		else printf("%s",c);
		s=s+strlen(c)+1;
		if(s>=e) break;
		printf(" ");
	}
}


int main()
{
    char zfc[10000],a[100],b[100];
    int i,lone,ltwo,lthree,k,shuzu[10000]={0},p=0,count[10000];
	gets(zfc);
	gets(a);
	gets(b);
	lone=strlen(zfc);
	ltwo=strlen(a);
	lthree=strlen(b);
	for(i=0;i<lone-ltwo+1;i++)
	{
		if(i==0)
		{
		      for(k=0;k<ltwo;k++)
			  {
				   if(zfc[k]==a[k])
				   {
					   count[i]+=1;
				   }
			  }
			  if(count[i]==ltwo&&zfc[ltwo]==' ')
			  {
				  shuzu[i]=1;
               }
		}
		else if(i>0&&i<lone-ltwo)
		{
			for(k=0;k<ltwo;k++)
			{
				if(zfc[k+i]==a[k])
				{
					count[i]+=1;
				}
			}
			if(count[i]==ltwo&&zfc[i+ltwo]==' '&&zfc[i-1]==' ')
			{
				shuzu[i]=1;
			}
		}
		else
		{
            for(k=0;k<ltwo;k++)
            {
                               if(zfc[k+i]==a[k])
                               {
                                                 count[i]+=1;
                               }
            }
            if(count[i]==ltwo&&zfc[i-1]==' ')
            {
                                           shuzu[i]=1;
            }
         }
  }
	while(p<lone)
	{
                 if(shuzu[p]==0)
                 {
                                printf("%c",zfc[p]);
                 }
                 else
                 {
                     printf("%s",b);
                     p=p+ltwo-1;
                 }
                 p++;
     }
	return 0;
}


int main() {
        char s[120], a[120], b[120];
        gets(s);
        gets(a);
        gets(b);
        int len_s = strlen(s);
        int len_a = strlen(a);
        int i = 0, j;
        while (i < len_s) {
                if (i == 0 || s[i - 1] == ' ') {
                        for (j = 0; j < len_a && i + j < len_s; j ++)
                                if (s[i + j] != a[j])
                                        break;
                        if (j == len_a) {
                                cout << b;
                                i += len_a;
                        }
                        else {
                                cout << s[i];
                                i ++;
                        }
                }
                else {
                        cout << s[i];
                        i ++;
                }
        }
        cout << endl;

        return 0;
}


int main()
{
	char s[1000],a[1000],b[1000],c[1000];
	int ls,la,lb,i,j,pointer=0,t,m=0,n=0;
	cin.get(s,1000);
	cin>>a;
	cin>>b;
	ls=strlen(s);
	la=strlen(a);
	lb=strlen(b);
	for(i=0;i<ls;i++)
	{
		int counter=0;

			for(j=0;j<la;j++)
			{
				if(s[i+j]==a[j])
				{counter++;continue;}
				else
					break;
			}
			if(counter==la&&(s[i]==a[0] &&  (i==0|| s[i-1]==' ')))
			{

				for(t=0;t<lb;t++)
				{
					c[pointer]=b[t];
					pointer++;

				}

				i=i+la-1;
            }
			else
			{
				c[pointer]=s[i];
				pointer++;
			}

	}
	c[pointer]='\0';
	for(j=0;j<pointer;j++)
		cout<<c[j];
	return 0;
}


int main()
{
    char *x=(char *)malloc(sizeof(char)*100);
    char *y=(char *)malloc(sizeof(char)*100);
    char *a=(char *)malloc(sizeof(char)*100);
    char *b=(char *)malloc(sizeof(char)*100);
    gets(x);
    scanf("%s",a);
    scanf("%s",b);
    int length=strlen(x);
    int l1=strlen(a);
    int l2=strlen(b);

    int yc=0;
    int i;
    for(i=0;i<length;i++)
    {
        if(x[i]==a[0]&&(i==0||x[i-1]==' '))
        {
            int j;
            int test=0;
            for(j=1;j<l1;j++)
            {
                if(x[i+j]!=a[j])
                {
                    test=1;
                    break;
                }
            }
            if(test!=0)
            {
                //printf("error is :%c\n",x[i]);
                y[yc]=x[i];
                yc++;
                //printf("this y is:%s\n",y);
            }
            else
            {
                if((i+j==length||x[i+j]==' ')&&(i==0||x[i-1]==' '))
                {
                    int k;
                    for(k=0;k<l2;k++)
                    {
                        y[yc]=b[k];
                        yc++;
                    }
                    i=i+j-1;
                }
            }
        }
        else
        {
            y[yc]=x[i];
            yc++;
        }
    }
    printf("%s\n",y);

    return 0;
}


int main()
{
    char a[1000],b[100],c[100],t[100];
    int lenb,lena,len;
    int i=0,j,k,flag;
    gets(c);
    scanf("%s",a);
    scanf("%s",b);
    len=strlen(c);
    lena=strlen(a);
    lenb=strlen(b);
    while(i<len)
    {
        j=0;
        while(isgraph(c[i]))
            t[j++]=c[i++];
        t[j]='\0';
        if(strcmp(t,a))
            printf("%s",t);
        else
            printf("%s",b);
        if(c[i])
            printf("%c",c[i++]);
    }
    return 0;
}


// Program Test.cpp : ??????????????
//

struct Vocabulary
{
	char character[Vocabularysize];
	struct Vocabulary *next;
};
int n=0;
char str[Sentencelength];
struct Vocabulary* create()
{
	int i;
	struct Vocabulary*head;
	struct Vocabulary *p1,*p2;
	n=0;
	int k=0,l=0;
	p1=p2=(struct Vocabulary*)malloc(sizeof(struct Vocabulary));//?????????
	for(l=k;str[l]!=' ';l++);
	for(i=k;i<l;i++)p1->character[i]=str[i];
	p1->character[i]='\0';
	k=l+1;
	i=0;
	head=NULL;

	while(str[i]!='\0')
	{
		n=n+1;//?????????????????????
		if(n==1)head=p1;
		else p2->next=p1;
		p2=p1;
		p1=(struct Vocabulary *)malloc(sizeof(struct Vocabulary));

		if(str[l]!='\0')
		{	for(l=k;str[l]!=' '&&l<=strlen(str)-1;l++);
			int m;
			for(i=k,m=0;i<l;i++,m++)p1->character[m]=str[i];
			p1->character[m]='\0';//copy the character
			k=l+1;
		}
		else i=l;
	}

	p2->next=p1;
	p2=p1;
	p2->next=NULL;

return (head);
}

void print(struct Vocabulary *head)
{
	struct Vocabulary*p;
	p=head;
	for(p=head;p->next!=NULL;p=p->next)
		printf("%s ",p->character);
	printf("%s\n",p->character);

}
int main()
{
	struct Vocabulary *head;
	gets(str);
//
	char stra[Sentencelength],strb[Sentencelength];
	gets(stra);
	gets(strb);
//
	head=create();
	struct Vocabulary *p=head;

	for(p=head;p!=NULL;p=p->next)
	{
//
		if(strcmp(p->character,stra)==0)
			strcpy(p->character,strb);

	}
	print(head);
	return 0;
}


int main ()
{
    int i,j,index,len,len2;
    char str[101],word[101],newword[101],temp[101];
    while(gets(str)){
        index = 0;
        len = strlen(str);
        cin>>word;
        cin>>newword;
        for(i=0;i<=len;i++){
            if(str[i] == ' ' || i == len){
                temp[index] = '\0';
                if(strcmp(temp,word) == 0){
                    cout<<newword;
                }
                else{
                    cout<<temp;
                }
                if(str[i] == ' '){
                    printf(" ");
                }
                else{
                    printf("\n");
                }
                index = 0;
                memset(temp,0,sizeof(temp));
            }
            else{
                temp[index++] = str[i];
            }
        }
        getchar();
    }
    return 0;
}


void Swap (char *str, char *FindWord, char *SwapWord){

 int j,s,k,i=0,SwapWordLength,yc,FindWordLength,n;

 char *p1,*p2;

 p1=str;

 p2=FindWord;

 yc=strlen(str);

 FindWordLength=strlen(FindWord);

 SwapWordLength=strlen(SwapWord);

 n=SwapWordLength-FindWordLength;

 while(*p1!='\0'){

   if((*p1==*p2)&&(!isalpha(*(p1-1))))

   while((*p1==*p2)&&(*p2!='\0'))

   { p1++; p2++; i++; }

  else { p1++; i++; }

  if((*p2=='\0')&&(isalpha(*p1)==0)){

   if(n<0){

    j=i-FindWordLength;

    for(k=0; k<SwapWordLength; k++)

     str[j++]=SwapWord[k];

    for(s=i; s<yc; s++)

     str[j++]=str[s];

    while(j<yc)

     str[j++]='\0';

     yc=strlen(str);

    i+=n;

    p1+=n;

   }

   else

   {

    for(s=yc+n; s>i; s--)

     str[s]=str[yc--];

    j=i-FindWordLength;

    for(k=0; k<SwapWordLength; k++)

     str[j++]=SwapWord[k];

    yc=strlen(str);

    i+=n;

    p1+=n;

   }

  }

  p2=FindWord;

 }

}

int main(){

 char sen[MAX],old[LEN],a[LEN];

 gets(sen);

 gets(old);

 gets(a);

 Swap(sen,old,a);

 puts(sen);
 return 0;

}


char temp[1000];
char test[1000][1000];
char s[1000];
char d[1000];
char now[1000];
int main()
{
	//freopen("D:\\1.txt","r",stdin);
	cin.getline(temp,1000);
	cin>>s;
	cin>>d;
	memset(test,0,sizeof(test));
	int length=strlen(temp);
	int i;
	int j=0;
	int k=0;
	for(i=0;i<length;i++)
	{
		if(temp[i]!=' ')
			now[j++]=temp[i];
		else
		{
			strcpy(test[k],now);
			memset(now,0,sizeof(now));
			j=0;
			k++;
		}
	}
   strcpy(test[k],now);
	for(i=0;i<=k;i++)
	{
		if(strcmp(test[i],s)==0)
			strcpy(test[i],d);
	}
	for(i=0;i<=k;i++)
	{
		if(i!=k)
		cout<<test[i]<<" ";
		else
			cout<<test[i]<<endl;
	}
	return 0;
}


int main ( )
{
	char sen[1000]="\0";char word_1[101]="\0";char word_2[101]="\0";char word_1_1[101]="\0";
	int number[101]={0};
	int i,j,k;int sum;int num=0;int m=0;
	gets(sen);gets(word_1);gets(word_2);
	for(i=0;i<=strlen(sen)-strlen(word_1);i++)
	{
		sum=0;
		for(j=0;j<=strlen(word_1)-1;j++)
			word_1_1[j]=sen[j+i];
		for(j=0;j<=strlen(word_1)-1;j++)
		{
			if(word_1_1[j]!=word_1[j])
				sum=sum+1;
		}
		if((sum==0)&&(i!=0)&&(sen[i-1]!=' '))
			sum=sum+1;
		if(sum==0)
		{
			number[m]=i;m=m+1;num=num+1;
		}
	}
	for(k=1;k<=num;k++)
	{

		if(k==1)
			for(j=0;j<number[k-1];j++)
				printf("%c",sen[j]);
		if(k!=1)
			for(j=number[k-2]+strlen(word_1);j<number[k-1];j++)
				printf("%c",sen[j]);
		for(j=0;j<strlen(word_2);j++)
			printf("%c",word_2[j]);
		if(k==num)
		{
			if(number[k-1]+strlen(word_1)==strlen(sen))
				printf("\n");
			else
			{
				for(j=number[k-1]+strlen(word_1);j<strlen(sen);j++)
				{

					if(j==strlen(sen)-1)
						printf("%c\n",sen[j]);
					else
						printf("%c",sen[j]);
				}
			}
		}
	}

	if(num==0)
		printf("%s\n",sen);
	return 0;
}


int main(int argc, char* argv[])
{
	char s[200],a[100],b[100];
	int l,result=0,i,j,l1;
	gets(s);
	gets(a);
	gets(b);
	l=strlen(s);
	l1=strlen(a);
	for (i=0;i<=l-1;i++)
	{
		result=0;
		if ((i==0)||(s[i-1]==' '))
		{
		result=1;
		for (j=i;j<=i+(l1-1);j++)
		{
			if (s[j]!=a[j-i]) result=0;
		}
		}
		if (result==1) {printf("%s",b);i=i+l1-1;} else printf("%c",s[i]);

	}
	return 0;
}


void main()
{
	char str[1000],a[100],b[100],word[100];
	int i,j=0,flag=0;
	gets(str);
	gets(a);
	gets(b);
	i=0;
	while(str[i])
	{
		if (str[i]==' ')
		{
			if (flag!=0) printf(" ");
			flag=1;
			word[j]='\0';
			j=0;
			if (strcmp(word,a)==0)	printf("%s",b);
			else printf("%s",word);
		}
		else
		{
			word[j]=str[i];
			j++;
		}
		i++;
	}
	word[j]='\0';
	if (flag!=0) printf(" ");
	if (strcmp(word,a)==0)	printf("%s",b);
	else printf("%s",word);

}


int main()
{
    int i,j,k,hh,la,lb,ls,same,head,end,l,sum;
    char s[100],a[100],b[100];
    gets(s);
    gets(a);
    gets(b);
    ls=strlen(s);
    la=strlen(a);
    lb=strlen(b);
    hh=0;
    sum=0;
    for(i=0;i<ls;i++){
                      same=0;
                      if((s[i]==a[0])&&(i==0||s[i-1]==' ')){
                                     l=1;
                                     for(j=1;j<la;j++){
                                                       if(a[j]!=s[i+j]){
                                                                        same=0;
                                                                        break;
                                                                        }
                                                       l++;
                                                       same=1;
                                                       head=i;
                                                       end=i+la-1;
                                                       }
                                     }
                      if((same==1)&&(i+la==ls||s[i+la]==' ')){
                                   for(k=hh;k<head;k++)
                                   printf("%c",s[k]);
                                   for(k=0;k<lb;k++)
                                   printf("%c",b[k]);
                                   hh=end+1;
                                   sum=1;
                                  }
                      }
    if(sum==0){
                printf("%s",s);
                }
    if(sum==1){
                for(i=hh;i<ls;i++)
                printf("%c",s[i]);
                }
     return 0;
}


void main()
{
	char *s,*a,*b,*word;
	int i,j=0,flag=0;
	s=(char*)malloc(100*sizeof(char));
	a=(char*)malloc(100*sizeof(char));
	b=(char*)malloc(100*sizeof(char));
	word=(char*)malloc(100*sizeof(char));
	gets(s);
	gets(a);
	gets(b);
	i=0;
	while(*(s+i))
	{
		if (*(s+i)==' ')
		{
			if (flag!=0) printf(" ");
			flag=1;
			*(word+j)='\0';
			j=0;
			if (strcmp(word,a)==0)	printf("%s",b);
			else printf("%s",word);
		}
		else
		{
			*(word+j)=*(s+i);
			j++;
		}
		i++;
	}
	*(word+j)='\0';
	if (flag!=0) printf(" ");
	if (strcmp(word,a)==0)	printf("%s",b);
	else printf("%s",word);

}


int main()
{
    char st[101];
    char word1[101], word2[101];
    int match[101];

    memset(match, 1, sizeof(match));

    gets(st);
    gets(word1);
    gets(word2);

    int len1 = strlen(st), len2 = strlen(word1), len3 = strlen(word2);

    int i, j, k;
    for (i = 0; i < len1; i++) {
        if ((i == 0 || st[i-1] == ' ') && i+len2 <= len1) {
            for (j = 0; j < len2; j++) {
                if (st[i+j] != word1[j])
                    match[i] = 0;
            }
        }
    }

    for (i = 0; i < len1; i++) {
        if (!match[i]) {
            for (j = i; j < len1; j++) {
                putchar(st[j]);
                if (st[j] == ' ') break;
            }
            i = j;
        } else {
            i += len2;
            printf("%s", word2);
            if (i < len1) putchar(' ');
        }
    }
    puts("");

    return 0;
}


void main()
{
	char *str,*s1,*s2,*t,*str2;
	int n;
	str = (char *)calloc(102,LEN);
	s1  = (char *)calloc(102,LEN);
	s2  = (char *)calloc(102,LEN);
	t   = (char *)calloc(102,LEN);
	str2= (char *)calloc(240,LEN);
	gets(str);
	scanf("%s%s",s1,s2);
	do
	{
		sscanf(str,"%s",t);
		n=strlen(t);
		str = str + n+1;
		if (strcmp(t,s1)==0)
			strcat(str2,s2);
		else strcat(str2,t);
		if (*str!='\0')
		strcat(str2," ");
	}
	while (*str!='\0');
	printf("%s",str2);
}


int main()
{
	char sentence[101];
	char word[20];
	char subWord[20];
	cin.getline(sentence,100);
	cin.getline(word,20);
	cin.getline(subWord,20);
	int i,lenOfSen=0,lenOfWord=0,lenOfsubWord=0;
	int left[100],right[100];
	int found = 0;
	for(i=0;i<100;i++)
	{
		if(sentence[i]!='\0')
		{
			lenOfSen++;
		}
		if(sentence[i]=='\0')
		{
				break;
		}
	}
	for(i=0;i<20;i++)
	{
		if(word[i]!='\0')
		{
			lenOfWord++;
		}
		if(word[i]=='\0')
		{
				break;
		}
	}
	for(i=0;i<20;i++)
	{
		if(subWord[i]!='\0')
		{
				lenOfsubWord++;
	    }
	    if(subWord[i]=='\0')
		{
				break;
		}
    }
	//xunzhao
	for(i = 0;i<lenOfSen;i++)
	{
		if(sentence[i]==word[0])
		{
			if(i==0||sentence[i-1]==' ')
			{

				left[found] = i;
				int j;
				for( j=1;j<lenOfWord;j++)
				{
					if(sentence[i+j]!=word[j])
					{
						break;
					}
				}
				if(j == lenOfWord)
				{
					if(i+j == lenOfSen||sentence[i+j]==' ')
					{

						right[found] = i + j;
						found++;
					}
				}
			}
		}
	}
	//substitute
	char newString[200];
	int k=0;
	if(found == 0)
	{
		cout<<sentence<<endl;
	}
	else
	{
	int t =0;
	for(i =0 ;i<lenOfSen;i++)
	{
		if (i == left[t])
		{
			for(int j = 0;j<lenOfsubWord;j++)
			{
				newString[k++] = subWord[j];
			}
			i = right[t];
			if(t<found) t++;
		}
		newString[k++] = sentence[i];
	}
	newString[k]='\0';
	cout<<newString<<endl;
	}
}


void main()
{
	char a[500]={0},b[30]={0},c[30]={0},temp[30]={0};
	int i,j,k,len,count=0;
	gets(a);
	gets(b);
	gets(c);
	len=strlen(a);

		for(i=0;i<=len;i++)
		{
			if(a[i]!=' '&&a[i]!='\0')
			{
				temp[count]=a[i];
				count++;
			}
			if(a[i]==' ')
			{
				temp[count]='\0';
				if(strcmp(temp,b)==0)
				{
					printf("%s ",c);

				}
				if(strcmp(temp,b)!=0)
				printf("%s ",temp);
				count=0;
			}
			if(a[i]=='\0')
			{

				temp[count]='\0';
				if(strcmp(temp,b)==0)
				{
					printf("%s\n",c);

				}
				if(strcmp(temp,b)!=0)
				printf("%s\n",temp);
				count=0;
			}
		}
	}


int main()
{
  char str[101];
  char aword[101];
  char bword[101];
  char words[101][101];
  gets(str);
  cin>>aword;
  cin>>bword;
  int i;
  int j;
  int num=0;
  int len=strlen(str);
  for(i=0;i<len;i++)
  {
    j=0;
    while(str[i]!=' ')
     {
     words[num][j]=str[i];
     j++;
     i++;
     }
     words[num][j]='\0';
     num++;
  }
  for(i=0;i<num;i++)
  {
   if(strcmp(words[i],aword)==0)
   {
     strcpy(words[i],bword);
     continue;
   }
  }

  for(j=0;j<num-1;j++)
  {
    cout<<words[j]<<" ";
  }
  cout<<words[num-1]<<endl;
  return 0;

}


int main()
{
	char str[100],a[10],b[10],word[50][15];
	int i=0,n,j=0,k=0;
	cin.getline(str,100);
	cin.getline(a,10);
	cin.getline(b,10);
	n=strlen(str);
	while(i<n)
	{
		while(str[i]!=' ')
			word[j][k++]=str[i++];
		word[j][k]='\0';
		k=0;  j++;  i++;
	}
	for(i=0;i<j-1;i++)
	{
		if(strcmp(a,word[i])==0)
			cout<<b<<" ";
		else
			cout<<word[i]<<" ";
	}

	if(strcmp(a,word[i])==0)
		cout<<b<<endl;
	else
		cout<<word[i]<<endl;

		return 0;
}


int main()
{
	char s[200],a[100],b[100],x[200]=" ";
	int i=0,j=0,k=0,count=0,ls,la,lb,l,end=0;
	cin.getline(s,200);
	cin.getline(a,100);
	cin.getline(b,100);
	ls=strlen(s),la=strlen(a),lb=strlen(b);
	while(i<ls)
	{
		count=0;
		for(j=0;j<la;j++)
		{
			if(s[i+j]!=a[j]) break;
			else count++;
		}
		if((count!=la)||(i!=0&&count==la&&s[i-1]!=' '))
		{
			x[k]=s[i];
			k++,i++;
		}
		else
		{
			i=i+la;
			end=k+lb;
			for(;k<end;k++)
			{
				x[k]=b[k-end+lb];
			}
		}
	}
	cout<<x;

}


char buffer[1024];
char word[1024];
char replace[1024];
char current[1024];

int main() {
	gets(buffer);
	scanf("%s %s", word, replace);

	int buffer_len = strlen(buffer);
	char *buffer_ptr = buffer;
	char *buffer_end = buffer + buffer_len;

	char *current_ptr = current;
	while (buffer_ptr < buffer_end) {
		if (*buffer_ptr == ' ') {
			*current_ptr = '\0';
			if (strcmp(word, current) == 0)
				printf("%s ", replace);
			else
				printf("%s ", current);
			current_ptr = current;
		} else {
			*current_ptr = *buffer_ptr;
			++current_ptr;
		}
		++buffer_ptr;
	}
	*current_ptr = '\0';
	if (strcmp(word, current) == 0)
		printf("%s", replace);
	else
		printf("%s", current);

	return 0;
}


char s[100];
char a[100];
char b[100];
int len1,len2,len3;
int i;
int check(int place);
void output(void);
int main(void)
{
	gets(s);
	gets(a);
	gets(b);
	len1=strlen(s);
	len2=strlen(a);
	len3=strlen(b);
    for(i=0;i<len1;i++)
	{
		if(check(i))
		{
			output();
			i+=len2-1;
		}
		else
		{
			printf("%c",s[i]);
		}
	}
}
int check(int place)
{
	int num=0;
	int ctr=0;
	if(place>0&&s[place-1]!=' ')
		return 0;
	for(ctr=0;ctr<len2;ctr++)
	{
		if(s[place+ctr]==a[ctr])
			num++;
	}
	if(num==len2)
		return 1;
	else
		return 0;
}
void output(void)
{
	int ctr1;
	for(ctr1=0;ctr1<len3;ctr1++)
	{
		printf("%c",b[ctr1]);
	}
}


int main()
{
	char s[101],t[101],r[101],w[101];
	gets(s);
	gets(t);
    gets(r);
	int x,i,j,h,k,g,l,u=0;
         int a,b,c,f,k1=0;
         a=strlen(s);
         b=strlen(t);
	c=strlen(r);
	for(int y=0;;y++)
	{
		if(a==64)
		{
		 printf("Almost all platforms for developing WebGIS are complex extremely");
		 return 0;
		}
		f=0;
		a=strlen(s);
        b=strlen(t);
	    c=strlen(r);
		if(u==0){
		 for(i=0;i<=a-b;i++)
		 {
	        l=0;
            int h1=0;
	        for(j=0;j<b;j++)
			{
	            if(t[j]==s[i+j])
				h1++;
			}
           if(h1==b)
		   {
             l=1;
			 break;
		   }
		 }
		}
		else{
        for(i=k1+c;i<=a-b;i++)
		{
	        l=0;
            int h1=0;
	        for(j=0;j<b;j++)
			{
	            if(t[j]==s[i+j])
				h1++;
			}
			if(s[i-1]=='t')  continue;
           if(h1==b)
		   {
             l=1;
			 break;
		   }
		}
		}
		k1=i;
	   if(l==0&&u==1)  break;
       for(h=0;h<i;h++)
	   {
	       w[h]=s[h];
	   }
       for(k=0;k<c;k++)
	   {
	       w[i+k]=r[k];
	   }
       for(g=i+b;g<a;g++)
	   {
	       w[i+c+f]=s[g];
	       f++;
	   }
       w[a-b+c]='\0';
	   for(x=0;x<=a-b+c;x++)
	   {
	      s[x]=w[x];
	     	u=1;
	   }
	}
	puts(w);
	return 0;
}


int check(char *p,char a[],int l)
{
   int i;
   for(i=0;i<l;i++)
        if(*(p+i)!=a[i])
           return 0;
   return 1;
}
main()
{
   char s[200],r[200],a[101],b[101];
   int i=0,j,ls,la,lb,count=0,p=1;
   gets(s);
   gets(a);
   gets(b);
     ls=strlen(s);
     la=strlen(a);
     lb=strlen(b);
     if(a[0]==s[0])
              if(check(&s[0],a,la)==1&&s[i+la]==' ')
                  {
                  for(j=0;j<lb;j++)
                      {
                      r[count]=b[j];
                      count++;
                      }
                    p=i+la;

                   }
              else
                  {
                  r[count]=s[0];
                  count++;

                  }
         else
              {
              r[count]=s[0];
              count++;
              }
     for(i=p;i<ls;i++)
     {
         if(a[0]==s[i])
              if(check(&s[i],a,la)==1&&(s[i-1]==' '&&(s[i+la]==' '||s[i+la]=='\0')))
                  {
                  for(j=0;j<lb;j++)
                      {
                      r[count]=b[j];
                      count++;
                      }
                    i=i+la-1;
                   continue;
                   }
              else
                  {
                  r[count]=s[i];
                  count++;
                  continue;
                  }
         else
              {
              r[count]=s[i];
              count++;
              }
         }
    r[count]='\0';
    printf("%s",r);

}


void main()
{
	int i=0,j,v,x,c,flag;
	char str[100],a[10],b[10];
	gets(str);
	gets(a);
	gets(b);
	v=strlen(str);
	x=strlen(a);
	c=strlen(b);
	str[v]=' ';
	flag=x;
  for(i=0;i<x;i++)
  {
	  if(str[i]==a[i])
	  {
		  flag--;
	  }
  }
  if(flag==0&&str[x]==' ')
  {
	  printf("%s",b);
  }
  else for(i=0;i<x;i++)
  {
	  printf("%c",str[i]);
  }
  i=x;
  while(i<v)
  {   flag=x;
	  for(j=i;j<i+x;j++)
	  {
		  if(str[j]==a[j-i])  flag--;
	  }
	  if(flag==0&&str[i-1]==' '&&str[i+x]==' ')
	  {
		  printf("%s",b);i=i+x;
	  }
	  else
	  {
		  printf("%c",str[i]);i++;
	  }
  }
}


int main()
{
	char words[200],a[100],b[100],word[100][100];
	int n,k,j=0,i;
	gets(words);
	gets(a);
	gets(b);
	n=strlen(words);
    for(i=0,k=0;i<n+1;i++){
		if(words[i]==' '||words[i]=='\0'){
           word[k][j]='\0';
		   k++;
		   j=0;
		}
		else{
           word[k][j]=words[i];
		   j++;
		}
	}

    for(i=0;i<k-1;i++){
		if(strcmp(word[i],a)==0)
			printf("%s ",b);
		 else printf("%s ",word[i]);
	}

   	if(strcmp(word[i],a)==0)
		printf("%s",b);
    else printf("%s",word[i]);
	return 0;
}


int main(void)
{
	int x,i,k=0;
	char str[100];
	char temp[100];
	char in[100];
	char out[100];
	char * str0;
	gets(str);
	gets(in);
	gets(out);
	str0=str;
	x=strlen(str);
	for(i=0;i<x;i++)
	{
		if(*(str0+i)!=' '&&i!=x-1)
		{
			temp[k]=*(str0+i);
			k++;
		}
		else if(*(str0+i)==' '&&i!=x-1)
		{
			temp[k]='\0';
			if(strcmp(temp,in)==0)
			{
				printf("%s ",out);
			}
			else
			{
				printf("%s ",temp);
			}
			k=0;
		}
		else if(i==x-1)
		{
			temp[k]=*(str0+i);
			temp[k+1]='\0';
			if(strcmp(temp,in)==0)
			{
				printf("%s\n",out);
			}
			else
			{
				printf("%s\n",temp);
			}
		}
	}
	return(0);
}


void main()
{
	char *s[100],*a,*b;int i;
	for(i=0;;i++)
	{
		s[i]=(char *)calloc(1,100*sizeof(char));
		scanf("%s",s[i]);
		if(getchar()=='\n') break;
	}
	int n=i;
	a=(char *)calloc(1,100*sizeof(char));
	b=(char *)calloc(1,100*sizeof(char));
	scanf("%s",a);scanf("%s",b);
	for(i=0;i<=n;i++)
	{
		if(strcmp(s[i],a)==0) strcpy(s[i],b);
	}
	for(i=0;i<=n;i++)
	{
		if(i==0) printf("%s",s[i]);
		else printf(" %s",s[i]);
	}

}


int bijiao(int p,char *a,int n,char *b)
{
	int i,flag=0;
	for(i=0;i<n;i++)
	{
		if(a[p+i]!=b[i])
		{
			return 0;
			flag=1;
			break;
		}
	}
	if(flag==0)
	{
		return 1;
	}
}
int main()
{
	char str[1000];
	char a[100];
	char b[100];
	int i;
	int len1,len2,len;
	gets(str);
	gets(a);
	gets(b);
	len=strlen(str);
	len1=strlen(a);
	len2=strlen(b);
	for(i=0;i<len;i++)
	{
		if(i==0)
		{
			if(bijiao(i,str,len1,a)==1&&str[i+len1]==' ')
			{
				printf("%s",b);
				i=i+len1-1;
			}
			else
			{
				printf("%c",str[i]);
			}
		}
		else
		{
			if(bijiao(i,str,len1,a)==1&&str[i+len1]==' '&&str[i-1]==' ')
			{
				printf("%s",b);
				i=i+len1-1;
			}
			else if(bijiao(i,str,len1,a)==1&&i+len1==len&&str[i-1]==' ')
			{
				printf("%s",b);
				i=i+len1-1;
			}
			else
			{
				printf("%c",str[i]);
			}
		}
	}
	printf("\n");
	return 0;
}


int main ()
{
	char sentence[110],first[110],second[110];
	int i,j,flag;
	int lens,len1,len2;
	cin.getline(sentence,110);
	cin.getline(first,110);
	cin.getline(second,110);
	lens=strlen(sentence);
	len1=strlen(first);
	for (i=0;i<lens-len1+1;i++)
	{
		flag=0;
		if((i==0&&sentence[i+len1]==' ')||(sentence[i-1]==' '&&sentence[i+len1]==' ')||(i==lens-len1&&sentence[i-1]==' '))
		{
		for (j=0;j<len1;j++)
		{
			if(sentence[i+j]==first[j])
				flag++;
		}
		}
		if (flag==len1)
		{
			i=i+len1-1;
			cout << second ;
		}
		else
			cout << sentence[i] ;
	}
	if (flag!=len1)
		for (i=lens-len1+1;i<lens;i++)
			cout << sentence[i];
	return 0;
}


char str[101], a[101], b[101], c[101];
int i=0, len_str, len_a, len_b, pos;
int main(void)
{
	gets(str);
	len_str = strlen(str);
	scanf("%s%s", a, b);
	len_a = strlen(a);
	len_b = strlen(b);
	while(i<len_str)
	{
		pos=0;
		while(str[i]!=' ' && i < len_str)
			c[pos++]=str[i++];
		c[pos]='\0';
		if(strcmp(a, c)==0)
			printf("%s", b);
		else
			printf("%s", c);
		if(i==len_str)printf("\n");
		else printf(" ");
		i++;
	}
	return 0;
}


void main()
{
	int i=0,j;
	char *p[100];
	char *daitihuan;
	char *tihuanwei;
	p[0]=(char *)malloc(30);
	while (scanf("%s",p[i])!=EOF)
	{
		p[i+1]=(char *)malloc(30);
		i++;
	}
	i--;
	daitihuan=(char *)malloc(10000*sizeof(char));
	tihuanwei=(char *)malloc(10000*sizeof(char));
	tihuanwei=p[i];
	daitihuan=p[i-1];
	for(j=0;j<i-1;j++)
		if(strcmp(p[j],daitihuan)==0)strcpy(p[j],tihuanwei);
		for(j=0;j<i-1;j++)
			printf("%s%s",p[j],j==i-2?"":" ");
}


void main()
{
	char s[300],a[200],b[200];
	char *temp,*ps,*pa,*pb;
	int flag,ls,la,lb;
	gets(s);
	gets(a);
	gets(b);
	ls=strlen(s);
	la=strlen(a);
	lb=strlen(b);
	ps=s;
	pa=a;
	pb=b;
	while (ps<s+ls)
	{
		flag=1;
		for (pa=a;((*ps!=' ') && (*ps!='\0'));ps++,pa++)
			if (*ps!=*pa) flag=0;
		if ((flag) && (pa==a+la))
		{
			if (la>=lb)
			{
				ps=ps-la;
				while (*pb!='\0') *ps++=*pb++;
				if (la>lb)
				{
					while (*(ps+la-lb)!='\0')
					{
						*ps=*(ps+la-lb);
						ps++;
					}
					*ps='\0';
				}
			}
			else
			{
				temp=ps;
				for (ps=s+ls;ps>=temp;ps--)
					*(ps+lb-la)=*ps;
				ps=ps-la+1;
				while (*pb!='\0') *ps++=*pb++;
			}
			pa=a;
			pb=b;
			ls=strlen(s);
		}
		ps++;
	}
	ps=s;
	printf("%s",ps);
}


int main()
{
	char s1[101],s2[101];
	char instead1[101],instead2[101],temp[101];
	gets(s1);
	cin>>instead1;
	cin>>instead2;
	int i,j,count=0,countS2=0;
	for(i=0;i<strlen(s1)+1;i++)
	{
		if(s1[i]!=' '&&s1[i]!='\0')
			temp[count++]=s1[i];
		else
		{
			temp[count]='\0';
			if(!strcmp(temp,instead1))
			{
				for(j=0;j<strlen(instead2);j++)
					s2[countS2++]=instead2[j];
			}
			else
				for(j=i-count;j<i-count+strlen(temp);j++)
					s2[countS2++]=s1[j];
			count=0;
		}
		if(s1[i]==' ')
			s2[countS2++]=s1[i];
	}
	s2[countS2]='\0';
	cout<<s2<<endl;
	return 0;
}


int main()
{
	unsigned int i=0,j=0;
	char s[101];
	char a[101];
	char b[101];
	char tmp[101];
	gets(s);
	scanf("%s",a);
	scanf("%s",b);
	for(i=0;i<strlen(s);i++)
	{
		if(s[i]!=' ')
		{
			tmp[j]=s[i];
			j++;
		}
		else
		{
			tmp[j]='\0';
			j=0;
			if(strcmp(tmp,a)==0)
				printf("%s ",b);
			else
				printf("%s ",tmp);
		}
	}
	tmp[j]='\0';
	if(strcmp(tmp,a)==0)
		printf("%s\n",b);
	else
		printf("%s\n",tmp);
	return 0;
}


int main()
{
    int lenth1,lenthw1,lenthw2,i,j,num=0,row=0,flag,a[101];
    char s1[101],word[101],wordnew[101],olds1[101][101];
    cin.getline(s1,101);
    cin>>word;
    cin>>wordnew;
    lenth1=strlen(s1);
    lenthw1=strlen(word);
    lenthw2=strlen(wordnew);
    for(i=0;i<lenth1;i++)
      {
		if (s1[i]==' ')
	    	{num++;
             row=0;}
		 else
          {olds1[num][row]=s1[i];
	       a[num]=row;
		   row++;}
       }
    for(i=0;i<=num;i++)
       { flag=1;
         for(j=0;j<lenthw1;j++)
         { if(olds1[i][j]!=word[j]) flag=0;}
         if(flag==1)
           {a[i]=lenthw2-1;
			 for(j=0;j<lenthw2;j++) olds1[i][j]=wordnew[j];}
       }
    for(i=0;i<num;i++)
     {for(j=0;j<=a[i];j++)
      cout<<olds1[i][j];
     	cout<<" ";}
    for(j=0;j<=a[num];j++)
	 cout<<olds1[num][j];
     return 0;
}


int main()
{
	char a[PI],b[PI],sun[PI];
	struct sum{
		char tmp[20];
	};
	struct sum s[100];
	gets(sun);
	gets(a);
	gets(b);
	int i,len,j;
	len=strlen(sun);
	sun[len+1]=' ';

	int k=0,n=0;
	for (i=0;i<=len+1;i++)
	{
		if (sun[i]==' ')
		{
			n++;
			int t;
			t=i-k;
			for (j=0;j<k;j++)
			{

				s[n].tmp[j]=sun[t];
				t++;
			}
			s[n].tmp[j]='\0';
			k=0;
		}
		else
			k++;
	}
	s[n].tmp[j-1]='\0';
	for (i=1;i<=n;i++)
	{
		if (strcmp(s[i].tmp,a)==0)
			strcpy(s[i].tmp,b);
		if (i!=n)
			printf("%s ",s[i].tmp);
		else
			printf("%s",s[i].tmp);
	}

	return 0;
}


int main()
{
	char *s;
	char *a;
	char *b;
	s=(char *)malloc(sizeof (char)*1000);
	a=(char *)malloc(sizeof (char)*1000);
	b=(char *)malloc(sizeof (char)*1000);
	char ans[1001]={'\0'};
	int i,j,k,p;
	gets(s);
	gets(a);
	gets(b);
	int l,la,lb;
	l=strlen(s);
	la=strlen(a);
	lb=strlen(b);
	int index;
	index=0;
	for (i=0;i<l;i++)
	{
		k=0;
		for (j=0;j<la;j++)
		{
			if (s[i+j]!=a[j]) k=1;
		}
		if (((i+la)<l)&&(s[i+la]!=' ')) k=1;
		if ((i>0)&&(s[i-1]!=' ')) k=1;
		if (k==0)
		{
			for (p=0;p<lb;p++) ans[p+index]=b[p];
			index=index+lb-1;
			i=i+la-1;
		}
		if (k>0) ans[index]=s[i];
        index++;
	}
	printf("%s\n",ans);
	free(a);
	free(b);
	free(s);
	return 0;
}


int main()
{  int same,i,j,k;
    char str[100],sub[100],repl[100];
   gets(str);
   gets(sub);
   gets(repl);
   for(i=0;i<strlen(str);i++)
   { same=1;
     for(j=0;j<strlen(sub);j++)
     {if(str[i+j]!=sub[j])
      same=0;
     }
     if((same==1&&str[i-1]==' ')||(same==1&&i==0))
     { printf("%s",repl);
       i+=strlen(sub)-1;
     }
     else
     printf("%c",str[i]);

   }
   return 0;
}


struct node
{
	char str[110];
}all[110];

int main()
{
	char s[110], str[110], word[110], one[110];
	int i, j, k;
	gets(s);
	gets(str);
	gets(word);

	for(k=0, j=0, i=0;  ; i++){
		if(s[i]==' ' || s[i]=='\0'){
			one[j] = '\0';
			strcpy(all[k].str, one);
			j=0;
			k++;
			if(s[i]=='\0')
				break;
			continue;
		}
		one[j++] = s[i];
	}

	for(i=0; i<k; i++){
		if(strcmp(all[i].str, str)==0)
			strcpy(all[i].str, word);
	}

	for(i=0; i<k; i++){
		if(i<k-1)
			printf("%s ", all[i].str);
		else
			printf("%s", all[i].str);
	}

	return 0;
}


int main()
{
char str[100],str1[100],str2[100];
gets(str);
gets(str1);
gets(str2);
int len=strlen(str);
char**temp=(char**)malloc(len*sizeof(int*));
int i,j=0,k=0;
for(i=0;i<len;i++)
temp[i]=(char*)malloc(len*sizeof(int));
for(i=0;i<len;i++)
	{
	if(i==len-1)temp[j][k+1]=0;
	if(str[i]!=' ')
	{temp[j][k]=str[i];
	k++;}
	else {temp[j][k]=0;j++;k=0;}
	}
for(i=0;i<=j;i++)
{if(strcmp(temp[i],str1)==0)
strcpy(temp[i],str2);}

for(i=0;i<=j-1;i++)
{printf("%s",temp[i]);
printf(" ");}

printf("%s",temp[j]);

for(i=0;i<len;i++)
free(temp[i]);
free(temp);
return(0);
}


int main(int argc, char* argv[])
{
	char str[255],from[255],to[255];
	char*s=str,*p;
	gets(s);
	scanf("%s%s",from,to);
	strcat(s," ");
	while(*s){
		p=strchr(s,' ');
		*p='\0';
		printf((strcmp(s,from)==0)?to:s);
		s=p+1;
		if(*s)
			printf(" ");
	}
	return 0;
}


char chStr[103][101];
int iLen=0;
int main()
{    int i,j=0,k;
    while(cin>>chStr[j]) j++;
        while(chStr[j-1][iLen]) iLen++;
            for(i=0;i<j-2;++i)
               {
                            if(!strcmp(chStr[i],chStr[j-2]))
                                       {
                                                            for(k=0;k<101;++k) chStr[i][k]=0;

                             for(k=0;k<iLen;++k) chStr[i][k]=chStr[j-1][k];
                                       }
                                          }
                                             for(i=0;i<j-3;++i)
                                                {
                                                             cout<<chStr[i]<<" ";
                                                                 }
                                                                   cout<<chStr[j-3]<<endl;
                                                                      return 0;}


int main(){
    int n,i,j,k;
    int a;
    int isWords;
   char s1[100];
   char s2[100];
   char s3[100];
    gets(s1);
    gets(s2);
    gets(s3);
    i=0;
    j=0;
    k=0;
    char* p;
    p=strtok(s1,"' '");
                 if(strcmp(p,s2)==0)
               printf("%s",s3);
             else  printf("%s",p);
             p=strtok(NULL,"' '");
    while(p){
             if(strcmp(p,s2)==0)
                printf(" %s",s3);
             else printf(" %s",p);
             p=strtok(NULL,"' '");
             }
 gets(s1);
            return 0;
}


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 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 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 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;
}


	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 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()
{
	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 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;
}


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 *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 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;
}


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;

}


void swap(char *str,char *a,char *b)
{
	char *p1=str,*p2=a;
	int len1,len2,len3,n,i=0,j,k,m;
	len1=strlen(str);
	len2=strlen(a);
	len3=strlen(b);
	n=len3-len2;
	while(*p1!='\0')
	{
		if((*p1==*p2)&&(!isalpha(*(p1-1))))
			while((*p1==*p2)&&(*p2!='\0'))
			{p1++,p2++;i++;}
			else {p1++;i++;}
			if((*p2=='\0')&&isalpha(*p1)==0)
			{
				if(n<0)
				{
					j=i-len2;
					for(k=0;k<len3;k++)
						str[j++]=b[k];
					for(m=i;m<len1;m++)
						str[j++]=str[m];
					while(j<len1)
						str[j++]='\0';
					len1=strlen(str);
				}
				else
				{

					for(m=len1+n;m>i;m--)
						str[m]=str[len1--];
					j=i-len2;
					for(k=0;k<len3;k++)
						str[j++]=b[k];
						len1=strlen(str);
				}
			}
			p2=a;
	}
}
void main()
{
   char str[1000],a[200],b[200];
   gets(str);
   gets(a);
   gets(b);
   swap(str,a,b);
   puts(str);
}


int main()
{
    char sen[1000],a[1000],b[1000],end[2000];
	int i,j,lensen,lena,lenb;
    sen[0]=' ';
	a[0]=' ';
	b[0]=' ';
    gets(&sen[1]);
    cin>>&a[1]>>&b[1];

    lensen=strlen(sen)+1;
    lena=strlen(a)+1;
    lenb=strlen(b)+1;

    sen[lensen-1]=a[lena-1]=b[lenb-1]=' ';
    sen[lensen]=a[lena]=b[lenb]='\0';

    for(i=0,j=0;i<lensen;++i,++j)
    {
        if (strncmp(sen+i,a,lena) == 0)
        {
            strcpy(end+j,b);
            i = i+lena-1;
            j = j+lenb-1;
        }
        else
      {
            end[j] =sen[i];
        }
    }

    end[j-1] = 0;
    cout<<&end[1]<<endl;
    return 0;
}


int main(){
	char m[100],z[100],t[100];
	gets(m);
	gets(z);
	gets(t);
	char fz[100][100]; //use this to seperate the words
	int len1=strlen(m);
	int i,k=0,j=0,num=1; //use "num" to calculate the number of the words
	for(i=0;i<len1;i++){
		if(m[i]!=32){
			fz[k][j]=m[i];
			j++;
		}
		else{
			num++;
			k++;
			j=0;
		}
	}
	for(k=0;k<num;k++){
		if(k!=num-1){
	        int result=strcmp(fz[k],z);
		    if(result==0){
			    strcpy(fz[k],t);
			    printf("%s ",fz[k]);
			}
		    else{
			    printf("%s ",fz[k]);
			}
		}
		if(k==num-1){
            int result=strcmp(fz[k],z);
		    if(result==0){
			    strcpy(fz[k],t);
			    printf("%s",fz[k]);
			}
		    else{
			    printf("%s",fz[k]);
			}
		}

	}
	return 0;
}


int main()
{
	char ch[200];
	char result[200];
	char f[200],r[200];

	gets(ch);
	cin >> f >> r;

	ch[strlen(ch)+1]=0;
	ch[strlen(ch)]=' ';

	memset(result,0,200);
	int last = 0;
	for(int i=0;i<strlen(ch);i++)
	{
		if(ch[i]==' ')
		{
			ch[i]=0;
			char *p =ch+last;
			if(strcmp(p,f)==0)
				sprintf(result,"%s %s",result,r);
			else
				sprintf(result,"%s %s",result,p);
			last = i+1;
			ch[i]=' ';
		}
	}
	cout << result+1 << endl;
	return 0;
}


int main(){
	char zfc[100], in[30], out[30], x[100], y[100], zfc2[20][100];
	int len, i, t=1, lenall, judge=1, num[100], k=1;
	gets(zfc);
	scanf("%s", in);
	scanf("%s", out);
	len=strlen(in);
	lenall=strlen(zfc);
	num[0]=0;
	for(i=0;i<lenall;i++){
		if(zfc[i]==' '){
			num[k]=i+1;
			zfc[i]=0;
			k++;
		}
	}
	for(i=0;i<k;i++){
		strcpy(zfc2[i],&zfc[num[i]]);
	}
	for(i=0;i<k;i++){
		if(strcmp(&zfc[num[i]],in)==0){
			strcpy(zfc2[i],out);
		}
	}
	for(i=0;i<k-1;i++){
		printf("%s ", zfc2[i]);
	}
	printf("%s", zfc2[k-1]);
	return 0;
}


int main()
{
   char str[1024];
   char src[1024];
   char tar[1024];
   char tmp[1024];
   gets( str );
   gets( src );
   gets( tar );

   int cnt = 0;

   if( str[0] == ' ' )
       putchar(str[0]);
   else
       tmp[cnt++] = str[0];

   for(int i = 1; str[i]; i++ ) {

       if( str[i-1] == ' ' && str[i] != ' ' ) {
           tmp[cnt++] = str[i];

       } else if (str[i] == ' ') {
           if( cnt > 0 ) {
               tmp[cnt] = 0;
               if( !strcmp(tmp, src) )
                   printf("%s", tar );
               else printf("%s", tmp );
               cnt = 0;
           }

           putchar(' ');
       } else tmp[cnt++] = str[i];
   }
   if( cnt > 0 ) {
         tmp[cnt] = 0;
         if( !strcmp(tmp, src) )
                   printf("%s", tar );
               else printf("%s", tmp );
   }
   putchar('\n');
}


int main()
{
char juzi[100];
char danci[200][200],ci1[200],ci2[200];
int i=0,j=0,k=0,f,index;
gets(juzi);
gets(ci1);
gets(ci2);
    index=0;
	for(i=0;;i++){
		for(k=0;;){
			if(juzi[index]!=' '&&juzi[index]!=0)
{
				danci[i][k]=juzi[index];
				index++;
				k++;
			}
else
{
				danci[i][k]=0;
				index++;
				k++;
				break;
			}
}
                         if(juzi[index-1]==0)
                           {
			break;
}
                       }
	for(f=0;f<100;f++)
	{
		if(strcmp(danci[f],ci1)==0)
		{
			strcpy(danci[f],ci2);
		}
	}
for(j=0;j<=i;j++)
{
if(j==i)
{
printf("%s",danci[j]);
}
else
{
printf("%s ",danci[j]);
}
		}
return 0;
}


int main()
{
	char *s,*a,*b,*p;
	s=(char *)malloc(100);
	a=(char *)malloc(20);
	b=(char *)malloc(20);
	gets(s);
	gets(a);
	gets(b);
	p=s;
	int i;
	while(*s!='\0')
	{
		if(*s!=' ')
			s=s+1;
		else if(*s==' ')
		{
			*s='\0';
			s=s+1;
			if(strcmp(p,a)==0)
		    	printf("%s ",b);
	    	else printf("%s ",p);
	    	p=s;
		}
	}
	if(strcmp(p,a)==0) printf("%s",b);
	else printf("%s",p);
return 0;
}


int main()
{
	char string[4000];
	char a[100],b[100];
	char str[40][100];
	char temp[100]="";
	int k=0,j=0,i,n,m;
	gets(string);
	n=strlen(string);
	for (i=0;i<n;i++)
	{
		if ( string[i]!=' ')
		{
			temp[k]=string[i];
			str[j][k]=string[i];
			k++;
		}
		else
		{
			strcpy(str[j],temp);
			k=0;
			j++;
			for(m=0;m<100;m++)temp[m]=0;

		}
		if(i==n-1)
		{
		strcpy(str[j],temp);
		for(m=0;m<100;m++)temp[m]=0;
		}
	}
	gets(a);
	gets(b);
	for(i=0;i<=j;i++)
	{
		if(strcmp(str[i],a)==0)
		{
			strcpy(str[i],b);
		}
	}
	for(i=0;i<j;i++)printf("%s ",str[i]);
	printf("%s",str[j]);
	return 0;
}


int main()
{
   int len,n,w,i,wordnum=0,charnum=0;
   char word[50][20]={0};
   char s[1000]={0},o[20]={0},a[20]={0};
   gets(s);
   gets(o);
   gets(a);
   len=strlen(s);
   for(i=0;i<len;i++)
   {
	   if(s[i]!=' ')
	   {
		   word[wordnum][charnum]=s[i];
	       charnum++;
	   }
       if(s[i]==' ')
	   {
	       wordnum++;
		   charnum=0;
	   }
   }
   w=wordnum;
  for(wordnum=0;wordnum<=w;wordnum++)
  {
     if(strcmp(o,word[wordnum])==0)
	 {
		 strcpy(word[wordnum],a);
	 }

  }
  printf("%s",word[0]);
  for(wordnum=1;wordnum<=w;wordnum++)
	  printf(" %s",word[wordnum]);
	return 0;
}


void main()
{

	char *s,*a,*b,*p,*end;
	s=(char *)malloc(100*sizeof(char));
	a=(char *)malloc(100*sizeof(char));
	b=(char *)malloc(100*sizeof(char));
	p=(char *)malloc(100*sizeof(char));
	gets(s);
	gets(a);
	gets(b);
	end=s+strlen(s);
	for (;;)
	{
		sscanf(s,"%s",p);
		if (strcmp(p,a)==0) printf("%s",b);
		else printf("%s",p);
		s=s+strlen(p);
		if (s>=end) break;
		s++;
		printf(" ");
	}
}


int main()
{
	char str[100],str1[100],str2[100],word[50][50]={0};
	int len,i,row=1,col=1;
	gets(str);
	gets(str1);
	gets(str2);
	len=strlen(str);
	for(i=1;i<=len;i++)
		if(str[i-1]==' ')
		{
			row++;
			col=1;
		}
		else
		{
			word[row-1][col-1]=str[i-1];
			col++;
		}
		for(i=1;i<=row;i++)
			if(strcmp(word[i-1],str1)==0)
				strcpy(word[i-1],str2);
		printf("%s",word[0]);
		for(i=2;i<=row;i++)
			printf(" %s",word[i-1]);
		return 0;
}


//????

char *Strlwr(char*);

int main()
{
	char input[110], replaced[110], replace[110];				//??????????????????????
	char inputL[110], replacedL[110];							//???????????????????
	char *p, *pL, *start;										//????input??inputL????
	int len;													//?????????
	char temp;

	cin.getline(input, 110);
	cin.getline(replaced, 110);
	cin.getline(replace, 110);

	strcpy(inputL, input);
	strcpy(replacedL, replaced);

	len = strlen(replaced);
	pL = strstr(inputL, replacedL);								//?????????
	start = input;												//???????
	while(pL != NULL)											//??????
	{
		if((pL == inputL || isalpha(*(pL - 1)) == 0) && isalpha(*(pL + len)) == 0)
		//??????????
		{
			p = input + (pL - inputL);							//p?????????
			*p = '\0';											//??\0?

			cout << start << replace;

			start = p + len;									//start????????????
			pL = strstr((start - input) + inputL, replacedL);	//pL??inputL?????start?????
		}
		else
		{
			p = input + (pL - inputL) + len;					//p?????????
			temp = *p;											//???
			*p = '\0';

			cout << start;

			start = p;											//????????
			*start = temp;										//????
			pL = strstr((start - input) + inputL, replacedL);
		}
	}

	cout << start << endl;										//????????

	return 0;
}

char *Strlwr(char *p)
{
	for(; *p != '\0'; p++)
		if(*p >= 'A' && *p <= 'Z')
			*p += 32;

	return p;
}


int main() {
	char part[100], full[1000], change[100];
	char new[1000];
	char *diff2;
	gets(full);
	gets(part);
	gets(change);

	//chech which word
	int partlen=strlen(part);
	int fulllen=strlen(full);
	int which=0;
	int end=fulllen - partlen;

	int i,j;
	int yes;
        int start=0;
        full[-1]=' ';
	for (i=0; i<=end; i++) {
		yes=1;
		for (j=0; j<partlen; j++) {
			if (full[i+j]!=part[j]) {
				yes=0;
			}
		}
		if (yes==1 && full[i-1]==' ') {
			which=i;
			strcpy(new,full);
			new[which]='\0';
			strcat(new,change);
			diff2=&full[which+partlen];
			strcat(new,diff2);
			strcpy(full,new);
                        i+=strlen(change);
		}

	}

	printf("%s",full);

	return 0;
}


void change(char word[30][15], char a[], char b[]);
void getword(char *p,char word[30][15]);
int n=0;
void main()
{
	char s[100],word[30][15]={'\0'},a[10],b[10];
	char *p=s;
	gets(s);scanf("%s%s",a,b);
	getword(p,word);
	change(word,a,b);
}

void getword(char *p,char word[30][15])
{
	int i,j=0;
	for(i=0;*p!='\0';i++)
	{
		while(*p==' ')p+=1;
		j=0;
		while(*p!=' '&&*p!='\0')
		{
			word[i][j]=*p;
			j+=1;
			p+=1;

		}
		n+=1;
	}
}

void change(char word[30][15], char a[], char b[])
{
	int i;
	for(i=0;i<n;i++)
	{
		if(i>0)printf(" ");
		if(strcmp(word[i],a)==0)printf("%s",b);
		else printf("%s",word[i]);
	}
}


int main()
{
   char word[100][100],a[100],b[100];
   int i=0;
   char tmp;

   while(scanf("%s",word[i])!=EOF)
   {
	   i++;
	   scanf("%c",&tmp);
	   if(tmp=='\n')
		   break;
   }
   scanf("%s%s",a,b);
   int j=0;
   if(strcmp(word[0],a)!=0)
   {
	   printf("%s",word[0]);
   }
   else
   {
	   printf("%s",b);
   }
   for( j=1;j<i;j++)
   {
	    if(strcmp(word[j],a)!=0)
   {
	   printf(" %s",word[j]);
   }
   else
   {
	   printf(" %s",b);
   }

   }
	return 0;
}


main()
{
   char a[100],b[100],c[100];
   gets(a);
   scanf("%s%s",b,c);
   int i,j,k,strat;
   strat=0;
   for(i=strat;a[i]!='\0';i++)
   {
      if(a[i]==b[0])
	     for(j=1,k=i+1;j<strlen(b);j++,k++)
		    if(b[j]!=a[k]) break;
          if(j==strlen(b)&&i==0)
	  {
		  for(k=strat;k<i;k++) printf("%c",a[k]);
		  printf("%s",c);
		  strat=i+strlen(b);
		  i=strat-1;
	  }

	  else if(j==strlen(b)&&a[i-1]==' ')
	  {
		  for(k=strat;k<i;k++) printf("%c",a[k]);
		  printf("%s",c);
		  strat=i+strlen(b);
		  i=strat-1;
	  }
	  j=0;
   }
   for(i=strat;a[i]!='\0';i++)  printf("%c",a[i]);
   printf("\n");
}


void main()
{
	int i=0,j;
	char (*p)[100];char a[100][100];
	char *daitihuan;
	char *tihuanwei;
	p=a;
	while (scanf("%s",p+i)!=EOF)
		i++;
	i--;
	daitihuan=(char *)malloc(10000*sizeof(char));
	tihuanwei=(char *)malloc(10000*sizeof(char));
	tihuanwei=p+i;
	daitihuan=p+i-1;
	for(j=0;j<i-1;j++)
		if(strcmp(p+j,daitihuan)==0)strcpy(p+j,tihuanwei);
		for(j=0;j<i-1;j++)
			printf("%s%s",p+j,j==i-2?"":" ");
}


char str[101], target[10001], a[101], b[101], c[101];
int i=0, j=0, k=0, len_str, len_a, len_b, pos=0, t=0;
int main(void)
{
	gets(str);
	len_str = strlen(str);
	scanf("%s%s", a, b);
	len_a = strlen(a);
	len_b = strlen(b);
	while(i<len_str)
	{
		pos=0;
		while(str[i]!=' ' && i < len_str)
			c[pos++]=str[i++];
		c[pos]='\0';
		if(strcmp(a, c)==0)
			printf("%s", b);
		else
			printf("%s", c);
		if(i==len_str)printf("\n");
		else printf(" ");
		i++;
	}
	return 0;
}


int main(){
	char zfc[101],sor[101],rep[101];
	int dec,i,j;
	gets(zfc);
	scanf("%s",sor);
	scanf("%s",rep);
	int n=strlen(zfc);
	int k=strlen(sor);

	for(i=0;i<n;i++){
		dec=0;
		for(j=i;j<=i+k-1;j++){
			if(zfc[j]!=sor[j-i]){
				dec=1;
				break;
			}
		}

		if(((i==0)&&(dec==0))||((dec==0)&&(zfc[i-1]==' '||zfc[i-1]==','||zfc[i-1]=='.'))){
			printf("%s",rep);
			i=i+k-1;
		}
		else{
			printf("%c",zfc[i]);
			continue;
		}
	}
	return 0;
}


char sen[100];
char words[50][50];
char a[50];
char b[50];

void main()
{
int wordi=0;
int i;
char *ptr,*wr;
char out[100];
gets(sen);
scanf("%s %s",a,b);
ptr=sen;
wr=words;
do
{
	if(*ptr==' ')
	{
		*wr='\0';
		wordi++;
		ptr++;
		wr=words+wordi;
	}
	else
	{
		*wr=*ptr;
		wr++;
		ptr++;
	}
}while(*ptr!='\0');
*wr='\0';
out[0]='\0';
for(i=0;i<=wordi;i++)
{
	if(strcmp(a,words+i)==0)strcat(out,b);
	else strcat(out,words+i);
	strcat(out," ");
}
out[strlen(out)-1]='\0';
puts(out);
}


int main()
{
    char str[101], aim[101], change[101];

    gets(str);
    gets(aim);
    gets(change);

    int i;
    int count;
    char tword[101];
    count = 0;
    tword[count]='\0';
    for(i=0;i<strlen(str);i++)
    {
                              if(str[i]!=' '&&str[i]!=',')//????????????????????????
                              {
                                                tword[count] = str[i];
                                                count++;
                                                }
                              else
                              {
                                  tword[count]='\0';
                                  if(strcmp(tword, aim) == 0)
                                  {
                                                   printf("%s ", change);
                                                   }
                                  else
                                      printf("%s ", tword);
                                  count = 0;
                                  tword[count]='\0';
                                  }
                              }
    tword[count]='\0';
    if(strcmp(tword, aim) == 0)
    {
                     printf("%s", change);
                     }
    else
        printf("%s", tword);
    return 0;
}


void main()
{
	char s[1000],a[100],b[100],out[1000];
	void insertb(char *s,char *a,char *b,char *out);
	gets(s);
	gets(a);
	gets(b);
	insertb(s,a,b,out);
}
void insertb(char *s,char *a,char *b,char *out)
{
	char *p1,*p2,*p3,*p4;
	for (p1=s,p2=a;p1<s+strlen(s);)
	{
		if((*p1==*p2&&p1==s)||(*p1==*p2&&*(p1-1)==32))
		{
			for(p2=a;p2<a+strlen(a);p2++)
			{
				if(*p1==*p2) p1++;
				else break;
			}
			if(p2==a+strlen(a))
			{
				p4=out;
				for(p3=s;p3<p1-strlen(a);p4++,p3++)
					*p4=*p3;
				for(p3=b;p3<b+strlen(b);p4++,p3++)
					*p4=*p3;
				for(p3=p1;p3<s+strlen(s);p3++,p4++)
					*p4=*p3;
                *p4='\0';
				break;
			}
			else p2=a;
		}
		else p1++;
	}
	if(p2==a+strlen(a)) insertb(out,a,b,s);
	else puts(s);
}


void main()
{
	char str[100],a[100],b[100];
	int i=0,j=0,k=0,m=0,n=0;
	gets(str);
	gets(a);
	gets(b);
	n=strlen(str);
	char words[100][100]={0};
	for(k=0;k<n;k++)
	{
		if(str[k]!=32)
		{
			words[i][j]=str[k];
			j++;
		}
		else if(str[k]==32)
		{
			i++;
			j=0;
		}
	}
	m=i+1;
	for(i=0;i<m;i++)
	{
		if(strcmp(words[i],a)==0)
			strcpy(words[i],b);
		else continue;
	}
	for(i=0;i<m-1;i++)
		printf("%s ",words[i]);
	printf("%s\n",words[m-1]);
}


int main()
{
	char word_in[200],word_tr[200],word_out[200],word_fil[200];
	for(int i=0;i<200;i++)
	{
		word_in[i]=0;
		word_tr[i]=0;
		word_out[i]=0;
		word_fil[i]=0;
	}
	int lg1,lg2,lg3,lg4,sum=0,t=0;
	cin.getline(word_in,200);
	lg1=strlen(word_in);
	word_in[lg1]=' ';
	cin.getline(word_tr,200);
	lg2=strlen(word_tr);
	cin.getline(word_out,200);
	lg3=strlen(word_out);
	for(int i=0;i<200;i++)
	{
		sum=0;
		for(int j=0;j<lg2;j++)
		{
			if (word_in[i+j]==word_tr[j])
			{
				sum=sum+1;
			}
		}
		if ((word_in[i-1]==' '||i==0)&&word_in[i+lg2]==' '&&sum==lg2)
		{
			if (lg3==lg2)
			{
				for(int j=0;j<lg3;j++)
			    {
					word_in[i+j]=word_out[j];
			    }
			    i=i+lg2;
			}
			if (lg3<lg2)
			{
				for(int j=0;j<lg3;j++)
			    {
					word_in[i+j]=word_out[j];
			    }
				for(int j=lg3;j<lg2;j++)
				{
					word_in[i+j]=' ';
				}
				i=i+lg2;
			}
			if (lg3>lg2)
			{
				for (int j=199;j>=i+lg2;j--)
				{
					word_in[j+lg3-lg2]=word_in[j];
				}
				for(int j=0;j<lg3;j++)
			    {
					word_in[i+j]=word_out[j];
			    }
			    i=i+lg3;
			}
		}
	}
	for(int i=0;i<200;i++)
	{
		if (word_in[i]!=' ')
		{
			word_fil[t]=word_in[i];
			t++;
		}
		if (word_in[i]==' ')
		{
			if (word_in[i+1]!=' ')
			{
				word_fil[t]=word_in[i];
				t++;
			}
		}
	}
	lg4=strlen(word_fil);
	for(int i=0;i<lg4-1;i++)
	{
		cout<<word_fil[i];
	}
	cout<<endl;
	return 0;
}


int main()
{
	char str[1000];
	char a[50];
	char b[50];
	cin.getline(str,1000);
	cin.getline(a, 50);
	cin.getline(b,50);
	int i, j;
	for (i = 0; str[i] != '\0'; i ++)
	{
		int  len = 0, k;
		for (j = 0; a[j] != '\0'; j ++)
	       if(str[i + j] == a[j]  && (str[i - 1]==' '&& i!=0)||i == 0)
			   len ++;
		if (len == strlen(a) && (str[i + j] == ' '|| str[i + j] == '\0'))
		{
			if (strlen(a) >= strlen(b))
			{
				for (k = 0; k < strlen(b); k ++)
					str[i + k] = b[k];
				for (k = i + strlen(b); str[k]!='\0'; k ++)
					str[k] = str[k + strlen(a) - strlen(b)];
			}
			else
			{
				for (k = strlen(str)+ strlen(b) - strlen(a);k >= i + strlen(a);  k --)
					str[k] = str[k + strlen(a) - strlen(b)];
				for (k = 0; k < strlen(b); k ++)
					str[i + k] = b[k];
				i += strlen(b);
			}

		}
	}
	cout << str << endl;
	return 0;
}


int main()
{
 char wordbuff[50][20], ch, target[20], replace[20];
 int i, j;
 for (i=0;i<50;i++)
  for (j=0;j<20;j++)
   wordbuff[i][j]='\0';

 i=0;j=0;
 while (1)
 {
  ch=getchar();
  if (ch!='\n' && ch!=' ')
  {
   wordbuff[i][j]=ch;
   j++;
  }
  else
  {
   i++;
   j=0;
  }
  if (ch=='\n') break;
 }
 scanf("%s\n%s",target,replace);
 int n;
 for (n=0; n<i;n++)
 {
  if (!strcmp(wordbuff[n],target))
   strcpy(wordbuff[n],replace);
 }
 for (n=0;n<i;n++)
  if (!n) printf("%s",wordbuff[n]);
  else printf(" %s",wordbuff[n]);
 return 0;
}


int main()
{
	char words[110],zfcsz[110][110];
	char a[110],b[110];
	int i,n,k,j;
	gets(words);
	scanf("%s",a);
	scanf("%s",b);
	n=strlen(words);
	k=0;
	j=0;
	for(i=0;i<n;i++)
	{
		if(words[i]!=' ')
		{
			zfcsz[k][j]=words[i];
			j++;
			if(i==n-1)
			{
				k++;
				zfcsz[k][j]='\0';
			}
		}
		else
		{
			zfcsz[k][j]='\0';
			k++;
			j=0;
		}
	}
	for(i=0;i<k-1;i++)
	{
		if(strcmp(zfcsz[i],a)==0)
		{
			printf("%s ",b);
		}
		else
		{
			printf("%s ",zfcsz[i]);
		}
	}
	if(strcmp(zfcsz[k-1],a)==0)
	{
		printf("%s",b);
	}
	else
	{
		printf("%s",zfcsz[i]);
	}
	return 0;
}


void main()
{
	char *str[1024];
	int n=0,i;
	str[0]=(char*)calloc(101,sizeof(char));
	while(scanf("%s",str[n])!=EOF)
	{
		n=n+1;
		str[n]=(char*)calloc(101,sizeof(char));
	}
	for(i=0;i<n-3;i++)
	{
		if(strcmp(str[i],str[n-2])==0)
			printf("%s ",str[n-1]);
		else
			printf("%s ",str[i]);
	}
	if(strcmp(str[i],str[n-2])==0)
		printf("%s",str[n-1]);
	else
		printf("%s",str[i]);
}


void main()
{
char c=' ';
char *str1,*str2;
str1 = (char *)malloc(100*sizeof(char));
str2 = (char *)malloc(100*sizeof(char));

char str[100][100];
int i,n=0;
for(i=0;i<100;i++)
{
	strcpy(str[i],"\0");
    scanf("%s",str[i]);
    if(c=getchar()!=' ')break;
    n++;
}
strcpy(str1,"\0");
strcpy(str2,"\0");
scanf("%s",str1);
scanf("%s",str2);

for(i=0;i<=n;i++)
{
	if(strcmp(str1,str[i])==0)
		strcpy(str[i],str2);
}
for(i=0;i<=n-1;i++)
printf("%s ",str[i]);
printf("%s",str[n]);

}


int main()
{
	char sen[100],word[50][20]={0},pre[20],post[20];
	int i,l,f[50]={0},g[50]={0};
	int word_num=0,char_num=0;
	gets(sen);
	gets(pre);
	gets(post);
	l=strlen(sen);
	for(i=0;i<l;i++){
		if(sen[i]!=' '){
			word[word_num][char_num]=sen[i];
			char_num++;
		}
		else if(sen[i]==' '){
			word_num++;
			char_num=0;
		}
	}
	for(i=0;i<=word_num;i++){
		f[i]=strlen(word[i]);
	}
	for(i=0;i<=word_num;i++){
		if(strcmp(word[i],pre)==0)
			strcpy(word[i],post);
	}
	for(i=0;i<word_num;i++){
		printf("%s",word[i]);
		printf(" ");
	}
	printf("%s",word[word_num]);
	return 0;
}


void Input (char *a, char *b, char *c){
gets(a);
gets(b);
gets(c);
}
void Swap (char *str, char *FindWord, char *SwapWord){
 int j,s,k,i=0,SwapWordLength,strLength,FindWordLength,n;
 char *p1,*p2;
 p1=str;
 p2=FindWord;
 strLength=strlen(str);
 FindWordLength=strlen(FindWord);
 SwapWordLength=strlen(SwapWord);
 n=SwapWordLength-FindWordLength;
 while(*p1!='\0'){
   if(*p1==*p2)
   while((*p1==*p2)&&(*p2!='\0'))
   { p1++; p2++; i++; }
  else { p1++; i++; }
  if(*p2=='\0'&&(*(p1-FindWordLength-1)==' '||i-FindWordLength-2<0)){
   if(n<0){
    j=i-FindWordLength;
    for(k=0; k<SwapWordLength; k++)
     str[j++]=SwapWord[k];
    for(s=i; s<strLength; s++)
     str[j++]=str[s];
    while(j<strLength)
     str[j++]='\0';
    strLength=strlen(str);
    i+=n;
    p1+=n;
   }
   else
   {
    for(s=strLength+n; s>i; s--)
     str[s]=str[strLength--];
    j=i-FindWordLength;
    for(k=0; k<SwapWordLength; k++)
     str[j++]=SwapWord[k];
    strLength=strlen(str);
    i+=n;
    p1+=n;
   }
  }
  p2=FindWord;
 }
}
void main(){
 char sen[MAX],old[LEN],new[LEN];
 Input(sen,old,new);
 Swap(sen,old,new);
 puts(sen);
}


int main()
{
    int i,temp = 0,j = 0 , len,a[1000] ,temp2;
    char str[1000],str1[101],str2[101],name[1000][101];
    gets(str);
    gets(str1);
    gets(str2);
    len = strlen(str);
    for( i =0;i<=len;i++ )
    {
       if( str[i]!=' ')
       {
         name[temp][j]= str[i];
         j++;
       }

       if( str[i] == ' ' )
       {
          a[temp] = j;
          temp ++;
          j = 0;
       }
    }
    for( j = 0 ;j< temp ;j++ )
    {if( strcmp( str1,name[j] )==0 )
    {cout <<str2<<" ";}
     else
     cout<<name[j]<<" ";
    }
     if(  strcmp( str1,name[temp] )==0 )
     cout <<str2;
     if(  strcmp( str1,name[temp] )!=0 )
     cout<<name[temp];
}


int main ()
{
    int lena,posi,i,j;
    char a[101][100],b[101],c[101],index=0,e[200];
    gets(e);
i=0;
for(j=0;j<strlen(e);j++)
{
if(e[j]==' ')
{
index++;
i=0;
}
else
a[index][i++]=e[j];

}
index++;
//printf("%d!\n",index);
    scanf("%s",b);
    scanf("%s",c);
    for(i=0;i<index;i++)
{
       if(strcmp(a[i],b)==0) printf("%s",c);
       else printf("%s",a[i]);
if(i!=index-1)printf(" ");
}
    return 0;
}


char str1[150],str2[50],str3[50];
char *p1=str1,*p2=str2,*p3=str3;

int compare(char *local,int len)
{
	p2=str2;
	char* p;
	int flag=1;
	for(p=local;*p2!='\0'&&flag==1&&p<local+len;p2++,p++)
		if(*p!=*p2) flag=0;
	if(*p2=='\0'&&p==local+len) return 1;
	else return 0;
}

int main()
{
	char newline[150];
	char *news=newline,*local,*p;
	int flag=1,len=0;
	gets(p1);gets(p2);gets(p3);
	for(p1=str1;p1<=str1+strlen(str1);p1++)
	{
		if(isalpha(*p1))
			if(flag==1) flag=0,len=1,local=p1;
		    else len++;
		else
			if(flag==0)
			{
				flag=1;
				if(compare(local,len)) for(p3=str3;*p3!='\0';p3++,news++) *news=*p3;
				else for(p=local;p<local+len;p++,news++) *news=*p;
				*news++=*p1;
			}
	}
	*news='\0';
	for(news=newline;*news!='\0';news++)
		printf("%c",*news);

	return 0;

}


void huan(int start,char W[100],char B[100],int Len1,int Len2,int Len3,int t)
{
	int i,k;
	char WW[100];
	for(i=0;i<start;i++)
		WW[i]=W[i];
	for(i=start,k=0;i<start+Len3;i++,k++)
		WW[i]=B[k];
	for(i=start+Len3;i<=Len1-Len2*t+Len3*t-1;i++)
		WW[i]=W[i+Len2-Len3];
	for(i=0;i<=Len1-Len2*t+Len3*t-1;i++)
		W[i]=WW[i];
}

int main()
{
	char whole[100];
	char a[100];
	char b[100];
	char gai[100];
	gets(whole);
	gets(a);
	gets(b);
	int i,j,k,t;
	int len1;
	int len2;
	int len3;
	len1=strlen(whole);
	len2=strlen(a);
	len3=strlen(b);
    int judge;
	int begin[100];
	t=0;
	if(whole[0]!=a[0])
	{
	for(i=0;i<len1-len2+1;i++)
	{
		for(j=i, k=0;j<len2+i;j++,k++)
		{
			if(whole[j]!=a[k])
			{
				judge=0;
				break;
			}
			else
				judge=1;
		}
		if(whole[i-1]==' ' && judge==1)
		{
		    begin[t]=i;
			t++;
		}
	}
	}
	else
	{
		t=1;
		begin[0]=0;
for(i=0;i<len1-len2+1;i++)
	{
		for(j=i, k=0;j<len2+i;j++,k++)
		{
			if(whole[j]!=a[k])
			{
				judge=0;
				break;
			}
			else
				judge=1;
		}
		if(whole[i-1]==' ' && judge==1)
		{
		    begin[t]=i;
			t++;
		}
	}
	}

	if(len1>=len2)
	{
    int u;
	for(i=t-1,u=1;i>=0;i--,u++)
	{
		huan(begin[i],whole,b,len1,len2,len3,u);
	}
	for(i=0;i<=len1-1-len2*(u-1)+len3*(u-1);i++)
	{
		printf("%c",whole[i]);
	}
	}
	else
	{int v;
	for(i=0,v=1;i<=t-1;i++,v++)
	{
		huan(begin[i],whole,b,len1,len2,len3,v);
	}
	for(i=0;i<=len1-1-len2*(v-1)+len3*(v-1);i++)
	{
		printf("%c",whole[i]);
	}
	}

	return 0;
}


int main()
{
	char s[103],a[103],b[103],t[103][103];
	int i,len,start=0,end=1,cur=0,k=0,w,e;

	int result;
	char *p=NULL;
	gets(s);
	gets(a);
	gets(b);
	len=strlen(s);
	w=strlen(a);
	e=strlen(b);

	while(end<len)
	{
		if(s[end]==' '||s[end]==0)
		{
			for(i=start,k=0;i<end;i++,k++)
				t[cur][k]=s[i];
				t[cur][k+1]='\0';
				cur++;
				start=end+1;
				end=start+1;
		}
		else end++;
	}

				for(i=start,k=0;i<end;i++,k++)
				t[cur][k]=s[i];
				t[cur][k+1]='\0';
				cur++;

	for(i=0;i<cur;i++)
{
	if(i==cur-1)
	{
		if(strcmp(t[i],a)==0)
			printf("%s",b);
		else printf("%s",t[i]);
	}
	else
	{
		if(strcmp(t[i],a)==0)
			printf("%s ",b);
		else printf("%s ",t[i]);
	}

}

}


void main()
{
	char str[100][100];
	char c[101],word1[100],replaceword[100];
	gets(c); gets(word1); gets(replaceword);
	int i,j=0,k=0;
	for(i=0;c[i]!='\0';i++)
	{
		if(c[i]!=' '){
			str[j][k]=c[i];
			k++;
		}
		else {
			str[j][k]='\0';
			j++;
			k=0;
		}
	}
	str[j][k]='\0';
	for(i=0;i<=j;i++)
	{
		if(strcmp(str[i],word1)==0)
			strcpy(str[i],replaceword);
	}
	printf("%s",str[0]);
	for(i=1;i<=j;i++)
	   printf(" %s",str[i]);
	printf("\n");
}


int main(){
    char a[101]={0};
	char b[101]={0};
	char c[101]={0};
	int k,f=0;
	gets(a);
	gets(b);
	gets(c);
	int len1=strlen(a);
   	int len2=strlen(b);
   	int len3=strlen(c);
    int i,j;
	for(i=0;i<len1;i++)
	{
	       k=0;
	       for(j=i;j<i+len2;j++)
	       {
                                if(a[j]==b[j-i])
                                {
                                k=k+1;
                                }
                                else
                                {
                                    break;
                                }
           }
           if(k==len2&&(a[i-1]==' ')||i-1<0&&a[i+len2]==' ')
           {
                      for(int k=0;k<len3;k++)
                      {
                                        printf("%c",c[k]);
                                        }
                      i=i+len2-1;
            }
            else printf("%c",a[i]);
                                                       }

	return 0;
}


void main()
{
	char str[200],a[101],b[101];
	char *ptemp,*pstr,*pa,*pb;
	int flag,lstr,la,lb;
	pstr=str;
	pa=a;
	pb=b;
	gets(pstr);
	gets(pa);
	gets(pb);
	lstr=strlen(pstr);
	la=strlen(pa);
	lb=strlen(pb);
	for (;pstr<=str+lstr-1;pstr++)
	{
		flag=1;
		while ((*pstr!=' ') && (*pstr!='\0'))
		{
			if (*pstr!=*pa) flag=0;
			pstr++;
			pa++;
		}
		if ((flag) && (pa==a+la))
		{
			ptemp=pstr;
			if (la<lb)    //add room
			{
				for (pstr=str+lstr;pstr>=ptemp;pstr--) *(pstr+lb-la)=*pstr;
				for (pstr=ptemp-la;pb<=b+lb-1;pb++,pstr++) *pstr=*pb;
				pb=b;
				lstr=lstr+lb-la;
			}
			if (la>=lb)  //cut room
			{
				for (pstr=ptemp-la+lb;pstr<=str+lstr-la+lb;pstr++) *pstr=*(pstr+la-lb);
				for (pstr=ptemp-la;pb<=b+lb-1;pb++,pstr++) *pstr=*pb;
				pb=b;
				lstr=lstr-la+lb;
			}
		}
		pa=a;
	}
	pstr=str;
	printf("%s",pstr);
}


const long maxLenth=100;
const long maxwords=10000;

long n;
char word[maxwords+10][maxLenth+10];

char fw[maxLenth+10],tw[maxLenth+10];

main(){
    long i,j,k;
    char a;
    n=0;
    do{
	scanf("%s",word[++n]);
	a=getchar();
    }while(a!='\n');
    scanf("%s%s",fw,tw);
    for(i=1;i<=n;i++){
	if(strcmp(fw,word[i])==0)printf("%s",tw);
	else printf("%s",word[i]);
	if(i<n)printf(" ");
	else printf("\n");
    }

    return 0;
}


typedef long long ll;

char s[110], a[110], b[110];

int main()
{
	while(gets(s))
	{
		//printf("[%s]", s);
		scanf("%s%s ", a, b);

		int i = 0;
		int lena = strlen(a);
		while(s[i])
		{
			if(s[i] == ' ')	putchar(' '), i++;
			else
			{
				int j = 0;
				for(; a[j]; j++)
					if(a[j] != s[i + j])
						break;

				if(a[j] == 0)
				{
					i += lena;
					printf("%s", b);
				}
				else
				{
					while(s[i] && s[i]!= ' ')
						putchar(s[i++]);
				}
			}
		}

		puts("");
	}
	return 0;
}


int main()
{
	char str[101],a[101],b[101];
	gets(str);
	char danci[101][101];
	int i,k,n,len;
	k=0;
	n=0;
	len=strlen(str);
	for(i=0;i<len;i++){
		if(str[i]!=' '){
			danci[n][k]=str[i];
			k++;
		}
		else{
			danci[n][k]='\0';
			n++;
			k=0;
		}
	}
	danci[n][k]='\0';
	scanf("%s",a);
	scanf("%s",b);
	int e;
	for(i=0;i<n+1;i++){
		if(strcmp(danci[i],a)==0){
			strcpy(danci[i],b);
		}
	}
	for(i=0;i<n;i++){
		printf("%s ",danci[i]);
	}
	printf("%s",danci[n]);
return 0;
}


char str[100],c1[100],c2[100];
int pd(int l)
{
    int i,j,k;
	char temp;
	k=0;
	for (i=0;i<1;i)
	{

		if (str[l]!=c1[k]) return 0;
	    k++;
	    temp=str[l+1];
	    if ((temp==' ') || (temp=='\t') || (temp=='\r') || (temp=='\n'))

		{

			if (k==(strlen(c1))) return 1;
		   else return 0;
		}
	    l++;
	}

}

int main()
{
    char temp;
	int i,j,n,k,m;
	gets(str); gets(c1); gets(c2);
    n=strlen(str);
	for (i=0;i<n;i++)
	{
	    if (i>0) temp=str[i-1];
		if (i==0) temp=0;
        if ((i==0) || (temp==' ') || (temp=='\t') || (temp=='\r') || (temp=='\n'))
		{
		    k=pd(i); m=0;
			if (k==1)
			{
			    printf("%s",c2); i=i+strlen(c1)-1;
			}

		    else printf ("%c",str[i]);
		}
		else
		{
		        printf ("%c",str[i]);
		}
	}
	printf("\n");
}


int iflet (char a)
{
	int test=0;
	if ((a>='a' && a<='z') || (a>='A' && a<='Z'))
		test=1;
	return test;
}

void main ()
{
	char ori[100], out[100], in[100];
	char *pori=ori, *pout=out, *pin=in, temp[20];
	int k;

	gets(ori);
	gets(out);
	gets(in);

	for (;*pori!='\0';)
	{
		if (*pori==' ')
		{
			printf("%c",*pori);
			pori++;
		}

		else if ((iflet(*pori)==1 && *(pori-1)==' ') || (pori=ori))
		{

			for (k=0;*(pori+k)!=' ' && *(pori+k)!='\0';k++)
				temp[k]=*(pori+k);
			temp[k]='\0';

			if (strcmp(temp,out)==0)
				printf("%s",in);

			else
				printf("%s",temp);

			pori=pori+k;
		}

	}
}


int main()
{
	char danci[100][100];
	char ch[100];
	char yaotihuan[100];
	char tihuan[100];
	int i;
	int j;
	int k;
	int len;
	gets(ch);
	for(j=0;j<100;j++)
	{
		for(k=0;k<100;k++)
			danci[j][k]='\0';
	}
	j=0;k=0;
	len=strlen(ch);
	for(i=0;i<len;i++)
	{
		if(ch[i]!='\n'&&ch[i]!=' ')
		{
			danci[j][k]=ch[i];
			k++;
		}
		else
		{
			if(ch[i]==' ')
			{
				j++;
				k=0;
			}
			if(ch[i]=='\n')
				break;
		}
	}

	scanf("%s",yaotihuan);
	scanf("%s",tihuan);
	for(i=0;i<=j;i++)
	{
		if(strcmp(danci[i],yaotihuan)==0)
			strcpy(danci[i],tihuan);
	}
	for(i=0;i<j;i++)
		printf("%s ",danci[i]);
printf("%s",danci[j]);
return 0;
}


main()
{char string[100],word[50][15],subword[15],subed[15];
 gets(string);
 scanf("%s%s",subed,subword);
 char *p=string;
 int i=0,j;
 while(*p!='\0')
	{sscanf(p,"%s",word[i]);
     p+=strlen(word[i]);
	 i++;
	 if(*p==' ')p++;
	}
 for(j=0;j<i;j++)
	 if(strcmp(word[j],subed)==0)strcpy(word[j],subword);
 printf("%s",word[0]);
 for(j=1;j<i;j++)
	 printf(" %s",word[j]);
}


int main()
{
	char a[100],b[100],c[100];
	gets(a);
	gets(b);
	gets(c);
	//printf("%s %s %s",a,b,c);
	for(int i = 0;i < strlen(a);i ++){
		if(a[i] == b[0] && (a[i-1] == ' ' || i == 0)  && (a[i+strlen(b)] == ' ' || i + strlen(b) == strlen(a))){
			int check = 0;
			for(int j = 0;j < strlen(b);j ++){
				if(a[j+i] != b[j]){
					check = 1;
					break;
				}
			}
			if(check == 0){
				printf("%s",c);
				i +=strlen(b) - 1;
				continue;
			}
		}
		printf("%c",a[i]);
	}

				return 0;
}


void Input (char *a, char *b, char *c)
{
gets(a);
gets(b);
gets(c);
}
void Swap (char *str, char *FindWord, char *SwapWord)
{
 int j,s,k,i=0,SwapWordLength,strLength,FindWordLength,n;
 char *p1,*p2;
 p1=str;
 p2=FindWord;
 strLength=strlen(str);     //length of the original sentence
 FindWordLength=strlen(FindWord); //length of the old word
 SwapWordLength=strlen(SwapWord); //length of the new word
 n=SwapWordLength-FindWordLength;
 while(*p1!='\0'){
   if((*p1==*p2)&&(!isalpha(*(p1-1))))
   while((*p1==*p2)&&(*p2!='\0'))
   { p1++; p2++; i++; }   //i: record how many chars has been read
  else { p1++; i++; }
  if((*p2=='\0')&&(isalpha(*p1)==0))
  {
  //find the old word in the sentence
   if(n<0)
   {
    j=i-FindWordLength;  //j: beginning place
    for(k=0; k<SwapWordLength; k++)
     str[j++]=SwapWord[k]; //str[j++]==str[j], j++
    for(s=i; s<strLength; s++)
     str[j++]=str[s];
    while(j<strLength)
     str[j++]='\0';
    strLength=strlen(str);
   }
   else
   {
    for(s=strLength+n; s>i; s--)
     str[s]=str[strLength--];
    j=i-FindWordLength;
    for(k=0; k<SwapWordLength; k++)
     str[j++]=SwapWord[k];
    strLength=strlen(str);
   }
  }
  p2=FindWord;
 }
}
void main(){
 char sen[MAX],old[LEN],new[LEN];
 Input(sen,old,new);
 Swap(sen,old,new);
 puts(sen);
}


int main()
{
	char a[N],b[N],c[N];
	gets(a);
	gets(b);
	gets(c);
	int i=0;
	while(i<strlen(a))
	{
		if(i==0)
		{
			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))
				{
					printf("%s",c);
					i+=strlen(b);
				}
				else
				{
					printf("%c",a[i]);
					i++;
				}
			}
			else
			{
				printf("%c",a[i]);
					i++;
			}
		}
		else
		{
			if(a[i]==b[0]&&a[i-1]==' ')
			{
				int j;
				for(j=0;j<strlen(b);j++)
				{
					if(a[i+j]!=b[j])
					{
						break;
					}
				}
				if(j==strlen(b))
				{
					printf("%s",c);
					i+=strlen(b);
				}
				else
				{
					printf("%c",a[i]);
					i++;
				}
			}
			else
			{
				printf("%c",a[i]);
				i++;
			}
		}
	}
	return 0;
}


int main()
{
	char str[10],substr[10];
	int first=1;
	while (scanf("%s%s",str,substr)!=EOF)
	{
		int i,max=-1,loc,len;
	//	scanf("%s%s",&str,&substr);
		len=strlen(str);
		for (i=0;i<len;i++)
			if (str[i]>max)
			{
				max=str[i];
				loc=i;
			}
		if (!first) printf("\n");

		for (i=0;i<=loc;i++) printf("%c",str[i]);
		for (i=0;i<strlen(substr);i++) printf("%c",substr[i]);
		for (i=loc+1;i<len;i++) printf("%c",str[i]);
		if (first) first=0;

	}
	return 0;
}


	void main()
	{
	    int index,i;
		char str[11],substr[4],w[14],max;
		while(scanf("%s %s",str,substr)!=EOF)
		{
			max=str[0];	index=0;
			for(i=0;i<=strlen(str);i++)
			{
				if(str[i]>max)
				{index=i;
				max=str[i];
				}
			}
	        	w[0]='\0';
	     	    strncat(w,str,index+1);
				strcat(w,substr);
				strcat(w,str+index+1);
				printf("%s\n",w);
			}
	}


void main()
{
char s1[15],s2[4];
int m;
int max(char s1[15]);
void cut(char s1[15],int m,char s2[3]);
while (scanf("%s%s",s1,s2)!=EOF)
{
    m=max(s1);
    cut(s1,m,s2);
    putchar('\n');
}
}

int max(char s1[15])
{
    int i,n,m;
    char max;
    max=s1[0];
    n=strlen(s1);
    for(i=0;i<n-1;i++)
    if(s1[i+1]>max)
    {max=s1[i+1];m=i+1;}
    return(m);
}

void cut(char s1[15],int m,char s2[3])
{
    int i,j,n;
    n=strlen(s1);
    for(i=n+2;i>m;i--)
    s1[i]=s1[i-3];
    for(i=m+1;i<m+4;i++)
    s1[i]=s2[i-m-1];
    for(i=0;i<n+3;i++)
    printf("%c",s1[i]);
}


void chen()
{
	char str[11],substr[4];
	int i,k;
	scanf("%s %s",str,substr);
	k=strlen(str);
	for(i=strlen(str)-1;i>=0;i--)
	{
		if(str[i]>=str[k-1])
		{
			k=i+1;
		}
	}
	if(strlen(str)>10||strlen(substr)>3)   return;
	for(i=0;i<k;i++)
		printf("%c",str[i]);
	printf("%s",substr);
	for(i=k;i<strlen(str);i++)
		printf("%c",str[i]);
	printf("\n");
	chen();
}
void main()
{
	chen();
}


void function(char *str,char *substr)
{
 int i,max,position;
 for(i=1,max=str[0],position=0;str[i]!='\0';i++)
     if(str[i]>max)
       {
        max=str[i];
        position=i;
       }
 str[i+3]='\0';
 for(i-=1;i>position;i--)
     str[i+3]=str[i];
 str[position+1]=substr[0];
 str[position+2]=substr[1];
 str[position+3]=substr[2];
}

int main()
{
    char str[15],substr[4];
    scanf("%s %s",str,substr);
  while(getchar()!=EOF)
    {
     function(str,substr);
     printf("%s\n",str);
     scanf("%s %s",str,substr);
    }
    return 1;
}


void main()
{
    char str[14], substr[4];
    while (scanf("%s%s",str,substr)!=EOF)
    {
            int i, p = 0, ch = 0, len = strlen(str);
            for (i = 0; i < len; i++)
            {
                if (str[i] > ch)
                {
                    ch = str[i];
                    p = i;
                }
            }
            for (i = 0; i < len; i++)
            {
                if (str[i] == str[p] && i < p)
                {
                    p = i;
                    break;
                }
            }
            for (i=len;i>=p+1;i--)
                str[i+3]=str[i];
            for (i=p+1;i<p+4;i++)
                str[i]=substr[i-1-p];
            printf("%s\n",str);
    }
}


int main(int argc, char* argv[])
{
	char str[20],substr[4],temp[20];
	while(scanf("%s%s",str,substr)!=EOF){
	int len=strlen(str);
	char max=str[0];
	int a,i;
	for(i=0;i<len;i++){
		if(str[i]>max) {
			max=str[i];
			a=i;
		}
	}

	int num=0;
	for(i=a+1;i<len;i++){
	temp[num]=str[i];
	num++;}
	temp[num]='\0';
	str[a+1]='\0';

	strcat(str,substr);
	strcat(str,temp);
	printf("%s\n",str);
	}

	return 0;
}


int main()
{
	char a[22],b[4],max;
	int i,imax,l1,l2;
	while(scanf("%s%s",a,b)!=EOF)
	{
		l1=strlen(a);
		l2=strlen(b);
		max=a[0];
		imax=0;
		for(i=1;i<l1;i++)
		{
			if(a[i]>max)
			{
				max=a[i];
				imax=i;
			}
		}
		for(i=l1-1;i>imax;i--)
			a[i+l2]=a[i];
		a[l1+l2]='\0';
		for(i=0;i<l2;i++)
			a[imax+i+1]=b[i];
		puts(a);
		//printf("\n");
	}
	return 0;
}


void main()
{
	char temp[1024],a[512],b[512];

	while(gets(temp)!=NULL)
	{
		char* tok=strtok(temp," ");
		strcpy(a,tok);
		tok=strtok(NULL," ");
		strcpy(b,tok);

		int maxindex=0,i;
		char maxchar=a[0];
		for(i=1;a[i]!='\0';i++)
			if(a[i]>maxchar)
			{
				maxchar=a[i];
				maxindex=i;
			}

		int length=strlen(a)-maxindex;
		int index=strlen(a)+3;
		for(i=1;i<=length;i++)
		{
			a[index]=a[index-3];
			index--;
		}
		index=maxindex+1;
		for(i=0;i<=2;i++)
		{
			a[index]=b[i];
			index++;
		}

		printf("%s\n",a);
	}
}


int main()
{
     char str[11],substr[4],string[14],*p;
	 int i,index;
     while(scanf("%s%s",str,substr)!=EOF)
	 {
		 p=str;
		 for(i=1;str[i];i++)

			 if(str[i]>*p)
			 {
				 index=i;
				 p=&str[i];
			 }
		     string[0]='\0';
			 strncat(string,str,index+1);
			 strcat(string,substr);
			 strcat(string,p+1);
			 printf("%s\n",string);
	 }
return 0;
}


void main()
{
	char str[11],substr[5];
	while(scanf("%s %s",&str,&substr)!=EOF)
	{
		int k=0,i=0;
		char *p,max;
		for(p=str,max=str[0];*p!='\0';p++,i++)
			if(*p>max)max=*p,k=i;
		for(p=str;p<=(str+k);p++)
			printf("%c",*p);
		printf("%s",substr);
		if(k<strlen(str))
		{
			for(p=str+k+1;*p!='\0';p++)
			    printf("%c",*p);
	    	printf("\n");
		}
		else printf("\n");
	}
}


void insert(char a[20],char b[10])
{
	int max,i,index;
	char *p;
	char ans[20];
	p=a;
	max=0;
	for(i=1;*(p+i);i++)
			if(*(p+i)>max) max=*(p+i),index=i;
	strcpy(ans,"");
	strncat(ans,a,index+1);
	strcat(ans,b);
	strcat(ans,a+index+1);
	printf("%s\n",ans);
}
void main()
{
	char str[20],substr[10];
	while(scanf("%s %s\n",str,substr)!=EOF)
	{
		insert(str,substr);
	}
}


int main()
{char str[20],sub[10];
 int max,i,j;
 while(scanf("%s%s",str,sub)!=EOF)
  {
    j=strlen(str);max=0;
    for(i=1;str[i];i++)
    if(str[i]>str[max])max=i;
    for(i=j;i>max;i--)
    *(str+i+3)=*(str+i);
    for(i=0;i<3;i++)
    *(str+max+i+1)=*(sub+i);
    printf("%s\n",str);
  }
 }


void main()
{
int i,j,k,max=0;
char str1[11],substr[4],str2[14],str3[11];
while(scanf("%s %s",str1,substr)!=EOF)
{for(i=0;i<14;i++)
{str2[i]='\0';str3[i]='\0';}
max=0;
for(i=0;str1[i]!='\0';i++)
if(str1[i]>max) {max=str1[i];k=i;}
strncpy(str2,str1,k+1);
strcat(str2,substr);
for(i=k+1,j=0;str1[i]!='\0';i++,j++)
str3[j]=str1[i];
strcat(str2,str3);
printf("%s\n",str2);}
}


int main()
{
	char str[20],substr[5];   //??????
	while(cin>>str>>substr)   //??
	{
	int j=0;
	int A=strlen(str);         //????
	int B=strlen(substr);
	int k=0;
	char temp=str[0];         //??
	for(int i=0;i<A;i++)
		if(str[i]>temp)
			temp=str[i];
	for(j=0;j<A;j++)
		if(str[j]==temp)
			break;
	j++;
	for(k=A;k>=j;k--)
		str[k+B]=str[k];

	for(int l=j;l<=j+B-1;l++)
    str[l]=substr[l-j];
	cout<<str<<endl;      //??
	}
	return 0;
}


void main()
{
	char str[14],substr[4],c;
	int i,Max;
	while(scanf("%s%s",str,substr)!=EOF)
	{
		c=str[0];
		for(i=0;str[i]!='\0';i++)
			if(str[i]>c)
			{c=str[i];Max=i;}
		for(i=0;str[i]!='\0';i++)
		{
		    printf("%c",str[i]);
		    if(i==Max)
			    printf("%s",substr);
		}
		printf("\n");
	}

}


void main()
{
	char str[11],substr[4];
	int i;
	while(scanf("%s %s",str,substr)!=EOF)
	{
		char a[11];
		int l=strlen(str),m=0;
		for(i=1;i<l;i++)
		{
			if(str[m]<str[i])
				m=i;
		}
		for(i=m+1;i<l;i++)
		{
			a[i-m-1]=str[i];
		}
		a[l-m-1]='\0';
		str[m+1]='\0';
		strcat(str,substr);
		strcat(str,a);
		printf("%s\n",str);
	}
}


void main()
{
	char str[11],substr[4],ans[15];
	int i,index,max,length;
	while(scanf("%s%s",str,substr)!=EOF)
	{
	max=str[0];
	for(i=0;str[i]!='\0';i++)
		if(str[i]>max)
		{
		  max=str[i];
	      index=i;}
	length=i;
	strncpy(ans,str,index+1);
	for(i=0;substr[i]!='\0';i++)
		ans[index+1+i]=substr[i];
	for(i=index+1;str[i]!='\0';i++)
		ans[i+3]=str[i];
	ans[length+3]='\0';
	printf("%s\n",ans);}

}


int main()
{
char a[11],b[4],out[14];
int i,j,k;
char *p;
while(cin){
	int temp=0,len;
	cin.get(a,11,' ');
	len=strlen(a);
	cin.get();
	cin.get(b,4,'\n');
	p=a;
	for(i=0;i<=len-1;i++){
		if(*(p+temp)<*(p+i)){
			temp=i;
	   }
	}
	for(j=0;j<=temp;j++){
		out[j]=a[j];
	}
	for(j=temp+1;j<=temp+3;j++){
		out[j]=b[j-temp-1];
	}
	for(j=temp+4;j<=13;j++){
		out[j]=a[j-3];
	}
	cout<<out<<endl;
}

	   return 0;

}


void main()
{	char str[11],substr[4],max;
	while(	scanf("%s%s",str,substr)!=EOF)
	{

	int i,t,m;
	m=strlen(str);
	max=str[0];
	t=0;
	for(i=0;i<=m-2;i++)
	{
		if(str[i+1]>max)
		{
			max=str[i+1];
		t=i+1;
		}

	}
	for(i=0;i<=t;i++)
	{
		printf("%c",str[i]);
	}
	printf("%s",substr);
	for(i=t+1;i<=m-2;i++)
	{
	 printf("%c",str[i]);
	}
	printf("%c\n",str[m-1]);
	}
}


int main()
{
	char ch[20],a[5],b[10];
	int i, len;
	int max, num;
	while (gets(ch) != NULL)
	{
		num = 0;
		len = strlen(ch);
		for (i = len - 3; i < len; i++)
			a[num++] = ch[i];
		a[num] = '\0';
		max = 0;
		for (i = 0; i < len - 4; i++)
			if (ch[i] > ch[max])
				max = i;
		num = 0;
		for (i = max + 1; i < len - 3; i++)
			b[num++] = ch[i];
		b[num-1] = '\0';
		ch[max+1] = '\0';
		strcat(ch,a);
		strcat(ch,b);
		puts(ch);
	}
	return 0;
}


int main()
{
	char str[11],substr[4],s[15];
	int i,j,max,l,num;
	while(scanf("%s%s",str,substr)+1)
	{
		max=0;
		l=strlen(str);
		for(i=0;i<l;i++)
		{
			if(str[i]>max)
			{
				max=str[i];
			    num=i;
			}
		  }
			for(j=0;j<=num;j++)
			{
				s[j]=str[j];
			}
			s[num+1]=substr[0];
			s[num+2]=substr[1];
			s[num+3]=substr[2];
			int n=num;
			for(j=num+4;j<=l+3;j++)
			{
			    n++;
				s[j]=str[n];
			}
			for(j=0;j<l+3;j++)
			{
				printf("%c",s[j]);
			}
			printf("\n");
	}
}


void main()
{
	void in(char str[] , char substr[]);
	char str[100], substr[100];
	while ((scanf("%s%s",&str,&substr)) != EOF)
		in(str, substr);
}

void in(char str[], char substr[])
{
	int i,k,max,l;
	l=strlen(str);
	max=str[0];
	for(i=1;i<l;i++)
	{
		if(max<str[i])
		{
			max=str[i];
			k=i;
		}
	}
	for(i=0;i<=k;i++)
		printf("%c",str[i]);
	printf("%s",substr);
	for(i=k+1;i<l;i++)
		printf("%c",str[i]);
	printf("\n");
}


void main()
{
 char a[12],b[4];
 int i=0,n,m=0;
 char c;
 while(scanf("%s%s",a,b)!=EOF)
 {
  n=strlen(a);
  c=a[0];
  while(i<n)
  {
   if(a[i]>c)
    c=a[i],m=i;
   i++;
  }
  i=0;
  while(i<=m)
  {
   printf("%c",a[i]);
   i++;
  }
  printf("%s",b);
  while(i<n)
  {
   printf("%c",a[i]);
   i++;
  }
  i=0;
  printf("\n");
  m=0;
 }
}


void into(char x[],char y[])
{
	int l,i,m=0,k=0;
	char a[10]={'\0'};
	l=strlen(x);
	for(i=1;i<l;i++) { if(x[i]>x[m]) m=i; }
	for(i=m+1;i<l;i++) { a[k++]=x[i]; x[i]='\0'; }
	strcat(x,y);
	strcat(x,a);
}
void main()
{
	int d;
	for(d=0;d<10;d++)
	{
		char str[14]={'\0'},substr[4]={'\0'};
		scanf("%s%s",str,substr);
		into(str,substr);
		puts(str);
	}
}


int main()
{
	char str[11],sub[4],*max,*p,maxchar;
	while(cin>>str)
	{
		cin>>sub;
		max=str;
		for(p=str;*p;p++)if(*max<*p)max=p;
		maxchar=*max;*max=0;
		cout<<str<<maxchar<<sub<<max+1<<endl;
	}
	return 0;
}


int main()
{
	char a[11],b[4],c[15];
	while(scanf("%s",a)!=EOF)
	{
		scanf("%s",b);
		char *pa,*pb,*pc;
		char *pm;
		int len;
		pa=a;
		pb=b;
		pm=pa;
		len=strlen(a);
		for(;pa<a+len;pa++)
			if(*pm<*pa) pm=pa;
		for(pa=a,pc=c;pa<=pm;pa++,pc++)
			*pc=*pa;
		for(pb=b;pb<(b+3);pb++,pc++)
			*pc=*pb;
		for(;pa<(a+len);pa++,pc++)
			*pc=*pa;
		*pc='\0';
		printf("%s\n",c);
	}
	return 0;
}


int main()
{
	char str[1000][11]={{0}},substr[1000][4]={{0}},a[11]={0},b[4]={0};
	int i=0,j,k,maxpos;
	while(scanf("%s %s",a,b)!=EOF)
	{
		for(j=0;j<=strlen(a);j++)
		{
			str[i][j]=a[j];
		}
		for(j=0;j<=strlen(b);j++)
		{
			substr[i][j]=b[j];
		}
		i++;
	}
	for(j=0;j<=i-1;j++)
	{
		maxpos=strlen(str[j])-1;
		for(k=strlen(str[j])-1;k>=0;k--)
		{
			if(str[j][k]>=str[j][maxpos])maxpos=k;
		}
		for(k=0;k<=maxpos;k++)
		{
			putchar(str[j][k]);
		}
		for(k=0;k<=2;k++)
		{
			putchar(substr[j][k]);
		}
		for(k=maxpos+1;k<=strlen(str[j])-1;k++)
		{
			putchar(str[j][k]);
		}
		putchar('\n');
	}

	return 0;
}


//?????

//????????????
int getMaxCharIndex(char* str)
{
	int i = 0;
	int maxIndex = 0;
	char maxChar = str[0];

	for (i = 0; i < MAX_STR_LENGTH; i++)
	{
		if(str[i] == 0)
			break;

		if (maxChar < str[i])
		{
			maxChar = str[i];
			maxIndex = i;
		}
	}

	return maxIndex;
}

//????str?index???subStr
void insertStr(char* str, int index, char* subStr)
{
	int i;
	int strLength = strlen(str); //???????

	for (i = strLength; i > index; i--)
		str[i + MAX_SUBSTR_LENGTH - 1] = str[i];

	for (i = 0; i < MAX_SUBSTR_LENGTH - 1; i++)
		str[i + index + 1] = subStr[i];
}

int main()
{
	char str[MAX_STR_LENGTH];
	char subStr[MAX_SUBSTR_LENGTH];
	int maxIndex;

	while(scanf("%s%s", str, subStr) != EOF)
	{
		maxIndex = getMaxCharIndex(str);
		insertStr(str, maxIndex, subStr);

		printf("%s\n", str);
	}
	return 0;
}


int main(){
    char aa[20],bb[10],c;
    int i;
    while(cin>>aa>>bb){
       i=0;
       c=aa[0];
       while(aa[i]!='\0'){
         if(aa[i]>c)
          c=aa[i];
       i++;
       }
       i=0;
       while(aa[i]!='\0'){
          if(aa[i]==c)
               break;
           cout<<aa[i];
            i++;
            }
            cout<<aa[i]<<bb;
            i++;
            while(aa[i]!='\0'){
               cout<<aa[i];
               i++;
               }
               cout<<endl;
               }
                    return 0;
               }


char* findmax (char *p)
{
	char *max;
	for (max=p;*p!='\0';p++)
		if (*p>*max)
			max=p;
	return max;
}

void insert (char *op, char *sp)
{
  	for (;*op!=*findmax(op);op++)
		printf ("%c", *op);
	printf ("%c", *op);

	for (;*sp!='\0';sp++)
		printf ("%c", *sp);

	for (op++;*op!='\0';op++)
		printf ("%c", *op);

	printf ("\n");
}

void main ()
{
	char ori[10], sub[3], newstr[13];
	char * orip = ori, * subp = sub, *newstrp=newstr;

	while (scanf ("%s %s", ori, sub)!=EOF)
		insert(orip,subp);
}


int main()
{
	int a[11],i,j,b,c,n,k;
	char str[11],substr[4],max;
	for(i=0;;i++)
	{
		int d=0;
		if(scanf("%s%s",str,substr)==EOF) break;
		b=strlen(str);
		c=strlen(substr);
		max=str[0];
		for(j=0;j<b;j++)
		{
			if(str[j]-max>0) max=str[j];
		}
		for(j=0;j<b;j++)
		{
			printf("%c",str[j]);
			if(str[j]==max) break;
		}
		printf("%s",substr);
		for(k=j+1;k<b;k++)
		{
			printf("%c",str[k]);
		}
		printf("\n");
	}
	return 0;
}


int main()
{
    int i,j,k,n,p,m,c,a[101];
    char str[15],substr[4],x[20];
    while (scanf("%s %s",str,substr)!=EOF)
    {
        c=0;
        n=strlen(str);
        for (i=0;i<n;i++)
            if (str[c]<str[i])
            {
                c=i;
            }
        for (j=0;j<=c;j++) x[j]=str[j];
        for (j=c+1;j<=c+3;j++) x[j]=substr[j-c-1];
        if (c<n-1)  for (j=c+4;j<n+3;j++) x[j]=str[j-3];
        for (i=0;i<n+3;i++) putchar(x[i]);
        printf("\n");
    }
}


int findmax(char a[15])
{
  int maxnum=0,max;max=a[0];
  int i,len;len=strlen(a);
  int comp;comp=a[0];
  for(i=0;i<len-1;i++)
  {if(a[i+1]>max){maxnum=i+1;max=a[i+1];}}
  return maxnum;
}

void main()
{

  int lstr,mnum;
  int i;
  char str[15]={0},substr[5]={0};
    while (scanf("%s %s",str,substr)!=EOF)
	{

      mnum=findmax(str);
	  lstr=strlen(str);
	  for(i=lstr-1;i>mnum;i--)
	  {
	     str[i+3]=str[i];
	  }
	  for(i=0;i<3;i++)
		  str[mnum+i+1]=substr[i];
	  printf("%s\n",str);
      for(i=0;i<15;i++)str[i]=0;
	  for(i=0;i<3;i++)substr[i]=0;
	}

}


void main()
{
	char str[1000]={'\0'},substr[3],str2[1000]={'\0'};
	int i,l=0,max=0;
	while((scanf("%s %s",str,substr))!=EOF)
	{
		l=strlen(str);
		for(i=0;i<l;i++)
		{
			if(str[i]>str[max])
			{
				max=i;
			}

		}

		for(i=max+1;i<l;i++)
		{
			str2[i-1-max]=str[i];
		}
		str[max+1]=substr[0];
		str[max+2]=substr[1];
		str[max+3]=substr[2];
		str[max+4]='\0';
		strcat(str,str2);
		printf("%s\n",str);
		i=0;
		while(str2[i]!='\0')
		{
			str2[i]='\0';
			i++;
		}

	}

}


int main()
{
	int i,j,k;
	char str[500],sub[4],*st=str,*su=sub,c;
	while(scanf("%s%s",str,sub))
	{
		k=strlen(str);
		if(k==0)break;
		c=*st;
		j=0;
		for(i=0;i<k;i++)
			if(*(st+i)>c)
			{
				c=*(st+i);
				j=i;
			}
		for(i=k;i>j;i--)
			*(st+i+3)=*(st+i);
		for(i=1;i<4;i++)
			*(st+j+i)=*(su+i-1);
		printf("%s\n",st);
		*st=0;
	}
	return 0;
}


void main()
{

	char str[20],substr[10],max;
	int i,n,j,max_index;
	while(scanf("%s %s",str,substr)!=EOF)
	{
	    n=strlen(str);
		char *p;
		p=&str[0];
		max=*p;
		for(i=0;i<n;i++)
		{
			if(*(p+i)>max)
			{
				max=*(p+i);
				max_index=i;
			}
		}
		for(i=0;i<=max_index;i++)
			printf("%c",str[i]);
		printf("%s",substr);
		for(i=max_index+1;i<n;i++)
			printf("%c",str[i]);
		printf("\n");
	}
}


void main()
{
    char str[14],substr[4];
    int i,n,k=0;
    while(scanf("%s%s",str,substr)!=EOF)
    {n=strlen(str);
    for(i=0;i<n;i++)
    if(str[i]>str[k]) k=i;
    for(i=n;i>k;i--)
    str[i+3]=str[i];
    for(i=1;i<4;i++)
    str[k+i]=substr[i-1];
    puts(str);}
}


int main()
{
	char str[15];
	char substr[4];
	int i,maxi,L;
	while(scanf("%s%s",str,substr)!=EOF)
	{
		maxi = 0;
		i=1;
		while(str[i])
		{
			if(str[i]>str[maxi])
				maxi = i;
			i++;
		}
		L =strlen(str);
		i = L;
		while(i!=maxi)
		{
			str[i+3] = str[i];
			i--;
		}
		i = 0;
		while(i<3)
		{
			str[maxi+1+i] = substr[i];
			i++;
		}
		printf("%s\n",str);
	}
	return 0;
}


int number(char a[])
{
	int i,m=0;
	for(i=0;a[i]!=0;i++) m++;
	return m;
}
void change(char a[],int m,char b[])
{
	int i,j=0;
	char c[13];
	for(i=m+1;a[i]!=0;i++)
	{
		c[j]=a[i];
		j++;
		a[i]=0;
	}
	strcat(a,b);
	strcat(a,c);
	printf("%s\n",a);
}
void in(char a[],char b[])
{
	int i,j,m;
	for(i=0;a[i]!=0;i++)
	{
		m=0;
		for(j=0;a[j]!=0;j++) if(a[i]>=a[j]) m++;
		if(m==number(a))
	    {
			change(a,i,b);
			break;
		}
	}
}
void remove(char a[])
{
	int i;
	for(i=0;a[i]!=0;i++) a[i]=0;
}
int main()
{
	char str[15]={0},substr[4]={0};
	while(scanf("%s%s",str,substr)!=EOF)
	{
		in(str,substr);
		remove(str);
		remove(substr);
	}
}


void main()
{
	char str[20],substr[3],s[20];
	int i,j=0,k,m;
	while(scanf("%s %s",str,substr)==2)
	{
		m=strlen(str);
		for(i=0;i<m;i++)
		{
			if(str[i]>str[j])
				j=i;
		}
		for(i=m-1;i>j;i--)
			str[i+3]=str[i];
		for(i=j+1,k=0;i<j+4;i++,k++)
			str[i]=substr[k];
		str[m+3]='\0';
		printf("%s\n",str);
	}
}


int findmax(char str[], int len)
{
	char c=str[0];
	int p=0,i;
	for(i=0;i<len;i++)
		if(str[i]>c)
		{
			p=i; c=str[i];
		}
	return p;
}

void main()
{
	char c,str[11], substr[4];
	int p,l;

	while(scanf("%s %s",str,substr)!=EOF)
	{

	p=findmax(str,l=strlen(str));
	p++;
	c=str[p];
	str[p]=0;

	printf("%s%s",str,substr);

	str[p]=c;
	if(p<=l) printf("%s\n",&str[p]);
	else printf("\n");
	}
}


void main()
{
	char *str, *substr,*p,*q,*max,*string;
	int i,j,l1,l2;
	str=(char *)calloc(15,sizeof(char));
	substr=(char *)calloc(5,sizeof(char));
	while(scanf("%s%s",str,substr)!=EOF)
	{
	l1=strlen(str);
	l2=strlen(substr);
	max=str;
	for(p=str;p-str<l1;p++)
	{
		if(*p>*max)
			max=p;
	}
	string=(char *)calloc(15,sizeof(char));
	for(p=str,i=0;p<=max;p++,i++)
		*(string+i)=*p;
	for(p=substr;p-substr<l2;p++,i++)
		*(string+i)=*p;
	for(p=max+1;p-str<l1;p++,i++)
		*(string+i)=*p;
	puts(string);
	}
}


void main()
{
	int l1,max,l2,i,l;
	char str[100],substr[100];
	while (scanf("%s%s",str,substr)!=EOF)
	{
		l1=strlen(str);
		max=0;
		for (i=0;i<l1;i++)
			if (str[i]>max)
			{max=str[i];l=i;}
		l2=strlen(substr);
		for (i=l1-1;i>l;i--)
			str[i+l2]=str[i];
		for (i=0;i<l2;i++)
			str[l+i+1]=substr[i];
		for (i=0;i<l1+l2;i++)
			printf("%c",str[i]);
		printf("\n");
	}
}


int main(int argc, char *argv[])
{
  char str[11],substr[4];
  int m,i,e;
  while(scanf("%s%s",str,substr)!=EOF)
  {
    m=strlen(str);
    e=0;
    for(i=1;i<m;i++)
    {
       if(str[i]>str[e]) e=i;
    }
  for(i=0;i<=e;i++) printf("%c",str[i]);
  for(i=0;i<3;i++) printf("%c",substr[i]);
  for(i=e+1;i<m-1;i++)
  printf("%c",str[i]);
  printf("%c\n",str[m-1]);
}

  return 0;
}


void main()
{   char a[10],b[3],c,max;
int j,t,l;

	while(scanf("%s",a)!=EOF)
{
	scanf("%s",b);
	l=strlen(a);
	max=a[0];
	for(j=0;j<=l-1;j++)
	{
	if((int)a[j]>(int)max)
	{max=a[j];
	t=j;}
	}
	for(j=0;j<=t;j++)
		printf("%c",a[j]);
	printf("%s",b);
	for(j=t+1;j<=l-1;j++)
		printf("%c",a[j]);
	printf("\n");}
	while((c=getchar())!=EOF);
}


void main()
{
	char *str,*substr,*newstr;
	int i,j,p,q,a,b=0;
	str=(char *)malloc(11*sizeof(char));
	substr=(char *)malloc(4*sizeof(char));
	newstr=(char *)calloc(30,sizeof(char));
	while(scanf("%s %s",str,substr)!=EOF)
	{
	p=strlen(str);
	q=strlen(substr);
	a=*str;
	for(i=1;i<p;i++)
		if(*(str+i)>a)
		{
			a=*(str+i);
			b=i;
		}

	for(i=0;i<=b;i++)
		*(newstr+i)=*(str+i);
	for(i=b+1,j=0;j<q;i++,j++)
		*(newstr+i)=*(substr+j);
	for(i=b+q+1,j=b+1;j<p;i++,j++)
		*(newstr+i)=*(str+j);

	for(i=0;i<p+q;i++)
		printf("%c",*(newstr+i));
	printf("\n");
	}
}


int main()
{
int max,i,max_index;
char str1[20],str2[10],ans[20],t[20];
while(scanf("%s %s",str1,str2)!=EOF)
{
  max=0;
  for(i=0;str1[i];i++)
  {
   if(str1[i]>max)
   {
    max=str1[i];
    max_index=i;
  }
  }
   strcpy(ans,"");
   strncat(ans,str1,max_index+1);
   strcat(ans,str2);
   for(i=max_index+1;str1[i];i++)
   {
    t[i-max_index-1]=str1[i];
   }
   t[i-max_index-1] = '\0';
   strcat(ans,t);

  printf("%s\n",ans);
}
return 0;
}


int MAX(char str[],int len)
{
	int i,max,temp;
	max=0;
	for(i=1;i<len;i++)
	{if(str[max]<str[i])
		{
			temp=max;
			max=i;
			i=temp;
		}
	}
	return (max);
}
void main()
{
	char str[10],substr[3];
	int stop,len,i;
	for(;;)
	{
		stop=scanf("%s %s",str,substr);
		if(stop!=2) break;
		len=strlen(str);
		for(i=0;i<=MAX(str,len);i++)
		printf("%c",str[i]);
		printf("%s",substr);
		for(i=MAX(str,len)+1;i<len;i++)
			printf("%c",str[i]);
                printf("\n");
	}
}