#include <bits/stdc++.h>
#define endl '\n'
using namespace std;

bool cmp(string a, string b)
{
    return a.size() > b.size();
}

bool erased[100000 + 10];

int main ()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    string s;
    cin >> s;

    int n;
    cin >> n;

    vector <pair<int,int> > v;

    for (int i = 0; i < n; i++)
    {
        string p;
        cin >> p;
        int Len = p.size();
        int start = 0;
        while (true)
        {
            int ind = s.find(p, start);

            if (ind == -1) break;
            v.push_back({ind, Len});

            start = ind + 1;
        }
    }

    sort(v.begin(), v.end());
    int sz = v.size();
    for (int i = 0; i < sz; i++)
    {
        bool b = 0;
        cerr << v[i].first << " " << v[i].second << endl;
        for (int j = v[i].first; j <= v[i].first + v[i].second; j++)
        {
            if (erased[j])
            {
                b = true;
                break;
            }
        }
        if (b) continue;

        for (int j = v[i].first; j <= v[i].first + v[i].second; j++)
        {
            erased[j] = 1;
        }
    }

    sz = s.size();
    for (int i = 0; i < sz; i++)
    {
        if (!erased[i]) cout << s[i];
    }
    cout << endl;


//    sort(v.begin(), v.end(), cmp);

//    while (!v.empty())
//    {
//        int mini = 2e9;
//        int minind = 0;
//        for (int i = v.size() - 1; i >= 0; i--)
//        {
//            int ind = s.find(v[i]);
//            if (ind == -1)
//            {
////                v.erase(v.begin() + i, v.begin() + i + 1);
//                continue;
//            }
//            if (ind < mini)
//            {
//                minind = i;
//                mini = ind;
//            }
//        }
//        if (mini != 2e9) s.erase(s.begin() + mini, s.begin() + mini + v[minind].size());
//        else break;
//    }

//    cout << s << endl;

    return 0;
}
/***
enjoycodingcppprograms
3
code
coding
cpp

-----
enjoyprograms
*/
