#include<bits/stdc++.h>
using namespace std;
int f[100001];
vector<string> v;
int prs(string t, string shablon){
    int prsr=-1;
    int n=t.size();
    int m=shablon.size();
    string sh;
    sh=shablon+'$'+t;
    //cout<<sh<<endl;
    for(int i=0;i<m+n+1;i++){
        f[i]=0;
    }
    f[0]=0;
    for(int i=1;i<m+n+1;i++){
        int l=f[i-1];
        while(l>0){
            if(sh[l]==sh[i]){
                break;
            }
            l=f[l-1];
        }
        if(sh[l]==sh[i]){
            f[i]=l+1;
        }else{
            f[i]=0;
        }
        if(i>=m+1 && f[i]==m){
            prsr=i-2*m;
            break;
        }
    }
    return prsr;
}
pair<string,int> triene(string t){
    int k=t.size()+1;
    string mn;
    bool a=0;
    for(int i=0;i<v.size();i++){
        if(prs(t,v[i])!=-1 && prs(t,v[i])<k){
            k=prs(t,v[i]);
            mn=v[i];
            a=1;
        }
    }
    string t1=t;
    t.clear();
    for(int i=0;i<k;i++){
        t.push_back(t1[i]);
    }
    for(int i=k+mn.size();i<t1.size();i++){
        t.push_back(t1[i]);
    }
    //cout<<t;
    return make_pair(t,a);
}
int main(){
    string t;
    cin>>t;
    int br;
    cin>>br;
    for(int i=0;i<br;i++){
        string s;
        cin>>s;
        v.push_back(s);
        //cout<<prs(t,s)<<" ";
    }
    /*int tek=t.size();
    while(tek!=t.size()){
        tek=triene(t).size();
        t=triene(t);
    }
    */
    /*t=triene(t);
    t=triene(t);
    t=triene(t);
    t=triene(t);
    cout<<endl;
    cout<<endl;
    cout<<t;
    */
    while(triene(t).second==1){
        t=triene(t).first;
    }
    cout<<t;
return 0;
}

