#include<bits/stdc++.h>
using namespace std;
char s1[1000005], s2[1000005];
int Next[1000005], cnt, len1, len2, n, ss[1000005], st[1000005], top;
void getNext(char *p, int plen) {
Next[0] = 0, Next[1] = 0;
for(int i = 1;i <= plen;i ++) {
int j = Next[i];
while(j && p[i] != p[j]) {
j = Next[j];
}
if(p[i] == p[j]) {
Next[i + 1] = j + 1;
}
else Next[i + 1] = 0;
}
}
void kmp(char *s, char *p) {
int last = -1;
int slen = strlen(s), plen = strlen(p);
getNext(p, plen);
int j = 0;
for(int i = 0;i < plen;i ++) {
while(j && p[i] != s[j]) {
j = Next[j];
}
if(p[i] == s[j]) j ++;
ss[i] = j;
st[++ top] = i;
if(j >= slen) {
top -= slen;
j = ss[st[top]];
last = i;
}
}
}
signed main() {
cin >> s2 >> s1;
kmp(s1, s2);
for(int i = 1;i <= top;i ++) {
cout << s2[st[i]];
}
}