#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
int n,ch[3000010][30],tot = 1,nxt[3000010],l;
bool v[3000010];
char input[3000010];
vector<char> ss;
struct node{
int pd,let;
}bo[3000010];
void insert(char *s) {
int u = 1,len = strlen(s);
for(int i = 0;i < len;i++) {
int c = s[i] - 'a';
if(!ch[u][c]) ch[u][c] = ++tot;
u = ch[u][c];
}
bo[u].pd++;
bo[u].let = len;
}
void bfs() {
for(int i = 0;i < 26;i++) ch[0][i] = 1;
queue<int> q;
q.push(1);
while(!q.empty()) {
int u = q.front();q.pop();
for(int i = 0;i < 26;i++) {
if(!ch[u][i]) ch[u][i] = ch[nxt[u]][i];
else {
int v = nxt[u];
q.push(ch[u][i]);
while(v > 0 && !ch[v][i]) v = nxt[v];
nxt[ch[u][i]] = ch[v][i];
}
}
}
}
bool find() {
int u = 1,t = 0;
for(int i = 0;i < l;i++) {
int c = ss[i] - 'a';
int k = ch[u][c];
if(bo[k].pd) {
ss.erase(ss.begin() + i - bo[k].let + 1,ss.begin() + i+1);
l -= bo[k].let;
return false;
}
u = ch[u][c];
}
return true;
}
int main() {
cin >> input >> n;
l = strlen(input);
for(int i = 0;i < l;i++)
ss.push_back(input[i]);
for(int i = 1;i <= n;i++) {
cin >> input;
insert(input);
}
bfs();
while(1) {
bool flag = false;
flag = find();
if(flag) break;
}
for(vector<char>::iterator it = ss.begin();it != ss.end();it++)
cout << *it;
return 0;
}