#include<bits/stdc++.h>
using namespace std;
string s,p;
int Next[1000010],Back[1000010];
deque<char> st;
void getNext() {
Next[0] = Next[1] = 0;
for (int i = 1;i < p.size();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;
}
return;
}
void kmp() {
getNext();
int j = 0;
for (int i = 0;i < s.size();i ++) {
while (j && s[i] != p[j])
j = Next[j];
if (s[i] == p[j]) ++ j;
Back[i] = j;
st.push_front(i);
if (j == p.size()) {
for (int k = 1;k <= p.size();k ++)
st.pop_front();
j = Back[st.front()];
}
}
return;
}
int main() {
cin >> s >> p;
kmp();
while (!st.empty()) {
printf("%c",s[st.back()]);
st.pop_back();
}
printf("\n");
return 0;
}