rt,求调或hack
#include <bits/stdc++.h>
using namespace std;
#define dbug(x) cout<<(#x)<<':'<<x<<' ';
#define ent cout<<endl;
#define f(n,m,i) for (int i = n;i <= m;i++)
#define fc(n,m,i) for (int i = n;i >= m;i--)
void C(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cerr.tie(0);
}
int nxt[1000001],len1,len2,pls[1000001],cnt = 0;
string s1,s2;
void getnext(){
nxt[1] = 0;
int k = 0;
f(2,len2,i){
while (k && s2[i] != s2[k + 1]){
k = nxt[k];
}
if (s2[i] == s2[k + 1]){
k ++;
}
nxt[i] = k;
}
}
void kmp(){
getnext();
int j = 0;
f(1,len1,i){
while(j && s1[i] != s2[j + 1]){
j = nxt[j];
}
if(s1[i] == s2[j + 1]){
j++;
}
if(j == len2){
pls[++cnt] = i - len2 + 1;
}
}
}
int main(){
C();
cin >> s1 >> s2;
s1 = " " + s1;
s2 = " " + s2;
len1 = s1.length() - 1;
len2 = s2.length() - 1;
while (1){
kmp();
if (!cnt){
break;
}
fc(cnt,1,i){
s1.erase(pls[i],len2);
}
cnt = 0;
}
s1.erase(0,1);
cout << s1;
return 0;
}
/*
g++ cs.cpp -o cs
./cs
whatthemomooofun
moo
*/