#include <iostream>
using namespace std;
/*
题目大意:求两个链表的首个共同结点的地址。如果没有,就输出-1
分析:
用结构体数组存储,node[i]表示地址为i的结点
key表示值,next为下一个结点的地址,flag表示第一条链表有没有该结点
遍历第一条链表,将访问过的结点的flag都标记为true,
当遍历第二条结点的时候,如果遇到了true的结点就输出并结束程序,没有遇到就输出-1
*/
struct Node {
char key;
int next;
bool flag;
} node[100001];
int main(){
int s1, s2, n;
cin >> s1 >> s2 >> n;
for (int i = 0; i < n; i++) {
char data;
int a, b;
cin >> a >> data >> b;
node[a] = {data, b, false};
}
for (int i = s1; i != -1; i = node[i].next)
node[i].flag = true;
for (int i = s2; i != -1; i = node[i].next) {
if (node[i].flag == true) {
printf("%05d\n", i);
return 0;
}
}
cout << -1 << endl;
return 0;
}