#include<bits/stdc++.h>
using namespace std;
const int maxn=1000010;
#define z 1000000009
#define Z 1000000003
#define ull unsigned long long
struct E{
ull h,H;
char c;
};vector<E>s,t;
char S[maxn],T[maxn];
int lens,lent;
ull ht,Ht,tmp;
ull Pow(int x,int y){
ull sf=1;
for(int i=1;i<=y;i++)sf*=x;
return sf;
}
bool check(){
for(int i=lent;i<s.size();i++)
if(s[i].h==ht&&s[i].H==Ht)return 1;
return 0;
}
void update(){
for(int i=lent;i<s.size();i++){
if(s[i].h==ht&&s[i].H==Ht){
s.erase(s.begin()+i-lent+1,s.begin()+i+1);
for(int j=1;j<s.size();j++)s[j].h=s[j].H=0;
for(int j=1;j<=lent;j++){
s[lent].h*=26;s[lent].h+=s[j].c-'a';s[lent].h%=z;
s[lent].H*=26;s[lent].H+=s[j].c-'a';s[lent].H%=Z;
}
for(int j=lent+1;j<s.size();j++){
s[j].h=s[j-1].h-(s[j-lent].c-'a')*tmp;s[j].h*=26;s[j].h+=s[j].c-'a';s[j].h%=z;
s[j].H=s[j-1].H-(s[j-lent].c-'a')*tmp;s[j].H*=26;s[j].H+=s[j].c-'a';s[j].H%=Z;
}
break;
}
}
return;
}
int main(){
cin>>S>>T;
lens=strlen(S),lent=strlen(T);
for(int i=lent;i>=1;i--)T[i]=T[i-1];
E mjyIly;s.push_back(mjyIly);
for(int i=lens;i>=1;i--)S[i]=S[i-1];
for(int i=1;i<=lens;i++){
E x;x.h=0;x.H=0;x.c=S[i];
s.push_back(x);
}
for(int i=1;i<=lent;i++){
s[lent].h*=26;s[lent].h+=S[i]-'a';s[lent].h%=z;
s[lent].H*=26;s[lent].H+=S[i]-'a';s[lent].H%=Z;
ht*=26;ht+=T[i]-'a';ht%=z;
Ht*=26;Ht+=T[i]-'a';Ht%=Z;
}tmp=Pow(26,lent-1);
for(int i=lent+1;i<=lens;i++){
s[i].h=s[i-1].h-(S[i-lent]-'a')*tmp;s[i].h*=26;s[i].h+=S[i]-'a';s[i].h%=z;
s[i].H=s[i-1].H-(S[i-lent]-'a')*tmp;s[i].H*=26;s[i].H+=S[i]-'a';s[i].H%=Z;
}
while(1){
if(s.size()<lent)break;
if(!check())break;
update();
}
for(int i=1;i<s.size();i++)cout<<s[i].c;
return 0;
}