#include<vector>
#include<iostream>
#include<array>
#include<string>
#include<sstream>
#include<algorithm>
#include<bitset>
#define reg register
using namespace std;
using gg=long long;
struct node{
string from,to;
};
bitset<1000000> flag;
vector<node> tail;
void solve(string &str)
{
bool fl=false;
for(gg v=1;v<=5;v++)
for(reg gg i=0;i<tail.size();i++)
{
if(!flag[i])
{
while(str.find(tail[i].from)!=string::npos)
{
str.replace(str.find(tail[i].from),tail[i].from.size(),tail[i].to);
fl=true;
}
if(fl)
{
flag[i]=true;
fl=false;
}
}
}
flag.reset();
return;
}
bool cmp(const node &a,const node &b)
{
return a.from>b.from;
}
int main()
{
cin.tie(0);
reg string tp,cl;
reg node temp;
reg gg n;
cin>>n;
getchar();
for(reg gg i=1;i<=n;i++)
{
getline(cin,tp);
if(tp[0]=='#')
{
switch(tp[1])
{
case'd':{
stringstream ss(tp);
ss>>cl>>cl;
temp.from=cl;
ss>>cl;
temp.to=cl;
tail.push_back(temp);
sort(tail.begin(),tail.end(),cmp);
break;
}
case'u':{
stringstream ss(tp);
ss>>cl>>cl;
for(gg i=0;i<tail.size();i++)
{
if(tail[i].from==cl)
{
tail.erase(tail.begin()+i);
break;
}
}
break;
}
}
cout<<'\n';
}
else
{
solve(tp);
cout<<tp<<'\n';
}
}
return 0;
}