#include<bits/stdc++.h>
using namespace std;
int n;
string s;
map<string,string>mp;
bool pd(char c)
{
return c>='0'&&c<='9'||c>='a'&&c<='z'||c>='A'&&c<='Z';
}
void zk(string s)
{
if(mp[s]=="")
{
cout<<s;
return;
}
string t=mp[s],p=s;
mp[s]="";
s=t;
int now=0;
while(now<s.size())
{
string ss;
for(;now<s.size();++now)
{
if(!pd(s[now]))
break;
ss+=s[now];
}
zk(ss);
if(now==s.size())break;
printf("%c",s[now]);
++now;
}
mp[p]=t;
}
int main()
{
cin>>n;
getline(cin,s);
for(int i=1;i<=n;++i)
{
getline(cin,s);
if(s[0]=='#')
{
printf("\n");
string s1,s2,s3;
int now=1;
for(;;++now)
{
if(!pd(s[now]))
break;
s1+=s[now];
}
for(++now;;++now)
{
if(!pd(s[now]))
break;
s2+=s[now];
}
for(++now;now<s.size();++now)
s3+=s[now];
if(s1=="define")
mp[s2]=s3;
else
mp[s2]="";
}
else
{
int now=0;
while(now<s.size())
{
string ss;
for(;now<s.size();++now)
{
if(!pd(s[now]))
break;
ss+=s[now];
}
zk(ss);
if(now<s.size())
printf("%c",s[now]);
++now;
}
printf("\n");
}
}
return 0;
}