#include <iostream>
#include<string>
#include<vector>
#include<unordered_map>
using namespace std;
struct node{
string addr;
char data;
string next;
int flag;
};
int main() {
int n;
string s1,s2;
while (cin >> s1 >> s2>>n) { // 注意 while 处理多个 case
vector<node>svec(n);
unordered_map<string, node>nodemap;
for(int i=0;i<n;i++){
cin>>svec[i].addr>>svec[i].data>>svec[i].next;//这个vector实际上没用,只用map就行
svec[i].flag=0;
nodemap[svec[i].addr]=svec[i];
}
string cur=s1;
while(nodemap[cur].next!="-1"){
nodemap[cur].flag=1;
cur=nodemap[cur].next;
}
nodemap[cur].flag=1;
string cur1=s2;
while(nodemap[cur1].next!="-1"){
if(nodemap[cur1].flag==1){
break;
}
nodemap[cur1].flag=1;
cur1=nodemap[cur1].next;
}
if(nodemap[cur1].next!="-1"){
cout<<cur1<<endl;
}
else{
if(cur1==cur){
cout<<cur1<<endl;
}
else{
cout<<-1<<endl;
}
}
}
}
// 64 位输出请用 printf("%lld")