#include<iostream>
#include<cstdio>
#include<vector>
#include<bits/stdc++.h>
using namespace std;
int Length(string s)
{
int len=0;
for(int i=0;s[i]!='\0';i++)
{
len++;
}
return len;
}
vector<int>SubstringFind(string s,string sub)
{
int lens=Length(s);
int lensub=Length(sub);
vector<int>pos;
int paisi=0;
for(int i=0;i<=lens-lensub;i++)
{
int matched=0;
for(int j=0;j<lensub;j++)
{
if(sub[j]==s[i+j])
{
matched++;
continue;
}
else
{
break;
}
}
if(matched==lensub)
{
pos.push_back(i);
}
}
return pos;
}
string Delete(string s,string sub)
{
int lens=Length(s);
int lensub=Length(sub);
vector<int>pos;
pos=SubstringFind(s,sub);
string res=" ";
int kototomo=0;
for(int i=0;i<lens;i++)
{
if(kototomo>pos.size()||i!=pos[kototomo])
{
res=res+s[i];
}
else
{
i+=(lensub-1);
kototomo++;
}
}
return res;
}
string InsertAtPos(string s,int pos,string sub)
{
string res=" ";
int lens=Length(s);
int lensub=Length(sub);
for(int i=0;i<pos;i++)
{
res=res+s[i];
}
res=res+sub;
for(int i=pos;i<lens;i++)
{
res=res+s[i];
}
return res;
}
string Replace(string s,string sub1,string sub2)
{
int lens=Length(s);
int lensub1=Length(sub1);
int lensub2=Length(sub2);
vector<int>pos;
pos=SubstringFind(s,sub1);
string res;
res=Delete(s,sub1);
for(int i=0;i<pos.size();i++)
{
res=InsertAtPos(res,pos[i]+(i*(lensub2-lensub1)),sub2);
}
return res;
}
int main()
{
vector<int>kothay;
string s,sub1,sub2;
int pos;
cin>>s>>sub1>>sub2;
string res=Replace(s,sub1,sub2);
cout<<res;
cout<<endl;
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CgojaW5jbHVkZTxjc3RkaW8+CgojaW5jbHVkZTx2ZWN0b3I+CgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBMZW5ndGgoc3RyaW5nIHMpCgp7CgppbnQgbGVuPTA7Cgpmb3IoaW50IGk9MDtzW2ldIT0nXDAnO2krKykKCnsKCmxlbisrOwoKfQoKcmV0dXJuIGxlbjsKCn0KCnZlY3RvcjxpbnQ+U3Vic3RyaW5nRmluZChzdHJpbmcgcyxzdHJpbmcgc3ViKQoKewoKaW50IGxlbnM9TGVuZ3RoKHMpOwoKaW50IGxlbnN1Yj1MZW5ndGgoc3ViKTsKCnZlY3RvcjxpbnQ+cG9zOwoKaW50IHBhaXNpPTA7Cgpmb3IoaW50IGk9MDtpPD1sZW5zLWxlbnN1YjtpKyspCgp7CgppbnQgbWF0Y2hlZD0wOwoKZm9yKGludCBqPTA7ajxsZW5zdWI7aisrKQoKewoKaWYoc3ViW2pdPT1zW2kral0pCgp7CgptYXRjaGVkKys7Cgpjb250aW51ZTsKCn0KCmVsc2UKCnsKCmJyZWFrOwoKfQoKfQoKaWYobWF0Y2hlZD09bGVuc3ViKQoKewoKcG9zLnB1c2hfYmFjayhpKTsKCn0KCn0KCnJldHVybiBwb3M7Cgp9CgpzdHJpbmcgRGVsZXRlKHN0cmluZyBzLHN0cmluZyBzdWIpCgp7CgppbnQgbGVucz1MZW5ndGgocyk7CgppbnQgbGVuc3ViPUxlbmd0aChzdWIpOwoKdmVjdG9yPGludD5wb3M7Cgpwb3M9U3Vic3RyaW5nRmluZChzLHN1Yik7CgpzdHJpbmcgcmVzPSIgIjsKCmludCBrb3RvdG9tbz0wOwoKZm9yKGludCBpPTA7aTxsZW5zO2krKykKCnsKCmlmKGtvdG90b21vPnBvcy5zaXplKCl8fGkhPXBvc1trb3RvdG9tb10pCgp7CgpyZXM9cmVzK3NbaV07Cgp9CgplbHNlCgp7CgppKz0obGVuc3ViLTEpOwoKa290b3RvbW8rKzsKCn0KCn0KCnJldHVybiByZXM7Cgp9CgpzdHJpbmcgSW5zZXJ0QXRQb3Moc3RyaW5nIHMsaW50IHBvcyxzdHJpbmcgc3ViKQoKewoKc3RyaW5nIHJlcz0iICI7CgppbnQgbGVucz1MZW5ndGgocyk7CgppbnQgbGVuc3ViPUxlbmd0aChzdWIpOwoKZm9yKGludCBpPTA7aTxwb3M7aSsrKQoKewoKcmVzPXJlcytzW2ldOwoKfQoKcmVzPXJlcytzdWI7Cgpmb3IoaW50IGk9cG9zO2k8bGVucztpKyspCgp7CgpyZXM9cmVzK3NbaV07Cgp9CgpyZXR1cm4gcmVzOwoKfQoKc3RyaW5nIFJlcGxhY2Uoc3RyaW5nIHMsc3RyaW5nIHN1YjEsc3RyaW5nIHN1YjIpCgp7CgppbnQgbGVucz1MZW5ndGgocyk7CgppbnQgbGVuc3ViMT1MZW5ndGgoc3ViMSk7CgppbnQgbGVuc3ViMj1MZW5ndGgoc3ViMik7Cgp2ZWN0b3I8aW50PnBvczsKCnBvcz1TdWJzdHJpbmdGaW5kKHMsc3ViMSk7CgpzdHJpbmcgcmVzOwoKcmVzPURlbGV0ZShzLHN1YjEpOwoKZm9yKGludCBpPTA7aTxwb3Muc2l6ZSgpO2krKykKCnsKCnJlcz1JbnNlcnRBdFBvcyhyZXMscG9zW2ldKyhpKihsZW5zdWIyLWxlbnN1YjEpKSxzdWIyKTsKCn0KCnJldHVybiByZXM7Cgp9CgppbnQgbWFpbigpCgp7Cgp2ZWN0b3I8aW50PmtvdGhheTsKCnN0cmluZyBzLHN1YjEsc3ViMjsKaW50IHBvczsKY2luPj5zPj5zdWIxPj5zdWIyOwpzdHJpbmcgcmVzPVJlcGxhY2UocyxzdWIxLHN1YjIpOwoKY291dDw8cmVzOwoKY291dDw8ZW5kbDsKCnJldHVybiAwOwoKfQ==