/// vn.spoj.com/problems/C11STR2/
/// Z by muoii
#include <bits/stdc++.h>
using namespace std;
#define tag "spoj"
#define maxn 0
#define maxc 0
#define len 31
#define oo 1000000007
#define mid ((l+r)>>1)
#define meset(a,x) memset(a,x,sizeof(a))
#define loop(x) for(int LoOpEr=x;LoOpEr-->0;)
///>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
int main()
{
#ifdef dmdd
freopen(tag".inp","r",stdin); freopen(tag".out","w",stdout);
#endif // dmdd
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
string a,b;
cin>>a>>b;
string s='$'+b+"@"+a;
int m=s.size()-1;
vector<int> Z(s.size()+1);
Z[1]=m;
int L=1,R=1;
for(int i=2,a,B;i<=m;i++)
{
if(R<i)
{
L=R=i;
while(R<=m && s[R]==s[R-L+1]) ++R;
R--;
Z[i]=R-L+1;
}
else
{
a=i-L+1,B=R-i+1;
if(Z[a]<B) Z[i]=Z[a];
else
{
L=i;
while(R<=m && s[R]==s[R-L+1]) ++R;
R--;
Z[i]=R-L+1;
}
}
}
for(int i=b.size()+2;i<=m;i++)
if(Z[i]==m-i+1)
{
cout<<a.substr(0,a.size()-Z[i])+b;
return 0;
}
cout<<a+b;
return 0;
}
Ly8vIHZuLnNwb2ouY29tL3Byb2JsZW1zL0MxMVNUUjIvCgovLy8gWiBieSBtdW9paQoKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgdGFnICJzcG9qIgojZGVmaW5lIG1heG4gMAojZGVmaW5lIG1heGMgMAojZGVmaW5lIGxlbiAzMQojZGVmaW5lIG9vIDEwMDAwMDAwMDcKI2RlZmluZSBtaWQgKChsK3IpPj4xKQojZGVmaW5lIG1lc2V0KGEseCkgbWVtc2V0KGEseCxzaXplb2YoYSkpCiNkZWZpbmUgbG9vcCh4KSBmb3IoaW50IExvT3BFcj14O0xvT3BFci0tPjA7KQovLy8+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+CiAKaW50IG1haW4oKQp7CiAgICAjaWZkZWYgZG1kZAogICAgZnJlb3Blbih0YWciLmlucCIsInIiLHN0ZGluKTsgZnJlb3Blbih0YWciLm91dCIsInciLHN0ZG91dCk7CiAgICAjZW5kaWYgLy8gZG1kZAogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTtjaW4udGllKDApO2NvdXQudGllKDApOwogCiAgICBzdHJpbmcgYSxiOwogICAgY2luPj5hPj5iOwogICAgc3RyaW5nIHM9JyQnK2IrIkAiK2E7CiAgICBpbnQgbT1zLnNpemUoKS0xOwogCiAgICB2ZWN0b3I8aW50PiBaKHMuc2l6ZSgpKzEpOwogCiAgICBaWzFdPW07CiAgICBpbnQgTD0xLFI9MTsKICAgIGZvcihpbnQgaT0yLGEsQjtpPD1tO2krKykKICAgIHsKICAgICAgICBpZihSPGkpCiAgICAgICAgewogICAgICAgICAgICBMPVI9aTsKICAgICAgICAgICAgd2hpbGUoUjw9bSAmJiBzW1JdPT1zW1ItTCsxXSkgKytSOwogICAgICAgICAgICBSLS07CiAKICAgICAgICAgICAgWltpXT1SLUwrMTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgYT1pLUwrMSxCPVItaSsxOwogCiAgICAgICAgICAgIGlmKFpbYV08QikgWltpXT1aW2FdOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEw9aTsKICAgICAgICAgICAgICAgIHdoaWxlKFI8PW0gJiYgc1tSXT09c1tSLUwrMV0pICsrUjsKICAgICAgICAgICAgICAgIFItLTsKIAogICAgICAgICAgICAgICAgWltpXT1SLUwrMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KIAogICAgZm9yKGludCBpPWIuc2l6ZSgpKzI7aTw9bTtpKyspCiAgICAgICAgaWYoWltpXT09bS1pKzEpCiAgICAgICAgewogICAgICAgICAgICBjb3V0PDxhLnN1YnN0cigwLGEuc2l6ZSgpLVpbaV0pK2I7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgIGNvdXQ8PGErYjsKICAgIHJldHVybiAwOwp9