#include <iostream>
#include <string>
#include <stdio.h>
#include <cmath>
#include <algorithm>
#include <map>
#include <vector>
#include <iomanip>
#include <stack>
#include <queue>


using namespace std;

#define ll long long
#define DEBUG(X) { cerr << #X << " : " << X <<endl; }
#define FOR(i,a,b) for(int i = a , _##i = (b) ; i <= _##i  ; i++)
#define FOD(i,a,b) for(int i = a , _##i = (b) ; i >= _##i ; i--)
#define sqr(x) ((x)*(x))
#define SZ(s) s.size()
#define ALL(a) a.begin() , a.end()
#define MAXN 1000005
#define MOD 1000000007
#define TIE cin.tie(0)
#define SYNC ios::sync_with_stdio(0)
#define min3(a1,a2,a3) min((a1),min((a2),(a3)))
#define ii pair<int,int>
#define llp pair<ll, ll>
#define lmp(a,b) make_pair((a), (b))

const int maxn = 1000010;
int b[maxn];
string s, p;
int n, m;

void preKMP() {
    int i =0, j = -1;
    b[0] = -1;

    while(i < m) {
        while(j >= 0 && p[i] != p[j]) j = b[j];
        i++;
        j++;

        b[i] = j;
    }
}

int compareKMP() {
    int i = 0, j = 0 ;
    while(i < n) {
        while(j >= 0 && s[i] != p[j]) j = b[j];
        i++; j++;
        if(j == m) {
       //     cout << "Find at " << i - m << " length = " << m << endl;
            s.erase(i - m, m);
            return 1;
        }
    }

    return 0;
}

int main() {
    SYNC;
    TIE;

    cin >> s >> p;
    n = s.length();
    m = p.length();

    preKMP();
    while(compareKMP()) {

    }

    cout << s;
}
