#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
#include<ext/pb_ds/hash_policy.hpp>
#include<ext/pb_ds/trie_policy.hpp>
#include<ext/pb_ds/priority_queue.hpp>
#define ll long long
#define ull unsigned long long
using namespace std;
using namespace __gnu_pbds;
inline ll read(){
long long s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9')s=(s<<1)+(s<<3)+(ch^48),ch=getchar();
return s*w;
}
inline void print(ll ch){
if (ch<0)ch=-ch,putchar('-');
if (ch>9)print(ch/10);
putchar(ch%10+'0');
}
map<string,string> a;
string fi(string s){
if(s!=a[s])
a[s]=fi(a[s]);
return a[s];
}
string ls_,lf;
int main()
{
char lz=getchar();
while(lz!='$'){
cin>>ls_;
getchar();
if(lz=='#'){
lf=ls_;
if(a[ls_]=="")a[ls_]=ls_;
}
else if(lz=='+'){
a[ls_]=lf;
}
else{
for(int i=0;i<6;i++)putchar(ls_[i]);
putchar(32);
ls_=a[fi(ls_)];
for(int i=0;i<6;i++)putchar(ls_[i]);
putchar(10);
}
lz=getchar();
}
return 0;
}