#include <bits/stdc++.h>
using namespace std;
#define fast ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)
#define pb push_back
const double PI = 3.141592653589793;
string s[105];
int m;
int d[105];
queue <int> q;
vector <int> e[1000];
int inf = 1e9;
int main() {
fast;
cin >> m;
int y = 0; // Вспомогательная переменная для заполнения массива s
for(int i = 0; i < m; i++){
string s1, s2, s3;
cin >> s1 >> s2 >> s3;
int x1 = -1, x2 = -1;
// Находим индексы в уже имеющемся массиве где s[i] - хранит название элемента, а i это его номер
for(int j = 0; j < 105; j++){
if(s1 == s[j]) x1 = j;
if(s3 == s[j]) x2 = j;
}
// Если не нашли название в массиве s, то добаляем
if(x1 == -1){
x1 = y;
s[y] = s1;
y++;
}
if(x2 == -1){
x2 = y;
s[y] = s3;
y++;
}
e[x1].pb(x2);
}
string st, f;
cin >> st >> f;
int u = -1, v = -1;
//Считываем название элементов и ищем индексы в массиве s[i]
for(int i = 0; i < 105; i++)
d[i] = inf;
for(int i = 0; i < 105; i++){
if(s[i] == st) u = i;
if(s[i] == f) v = i;
}
// То где была моя ошибка
if(st == f){
cout << 0;
return 0;
}
// Если какое - то название не нашли в массиве s[i] значит его нет и в графе -> ответ -1
if(u == -1 or v == -1){
cout << -1;
return 0;
}
d[u] = 0;
q.push(u);
// Запускаем bfs
while(!q.empty()){
int r = q.front();
q.pop();
for(auto w : e[r]){
if(d[w] == inf){
d[w] = d[r] + 1;
q.push(w);
}
}
}
if(d[v] == inf) cout << -1;
else cout << d[v];
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiAgICAgICAgIAp1c2luZyBuYW1lc3BhY2Ugc3RkOwogICAgICAgICAKI2RlZmluZSBmYXN0IGlvczo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7Y291dC50aWUoMCkKI2RlZmluZSBwYiBwdXNoX2JhY2sKICAgICAgICAKY29uc3QgZG91YmxlIFBJID0gMy4xNDE1OTI2NTM1ODk3OTM7CiAgICAgCnN0cmluZyBzWzEwNV07CmludCBtOwppbnQgZFsxMDVdOwpxdWV1ZSA8aW50PiBxOwp2ZWN0b3IgPGludD4gZVsxMDAwXTsKaW50IGluZiA9IDFlOTsKICAgICAKaW50IG1haW4oKSB7CiAgICBmYXN0OwogICAgY2luID4+IG07CiAgICBpbnQgeSA9IDA7IC8vINCS0YHQv9C+0LzQvtCz0LDRgtC10LvRjNC90LDRjyDQv9C10YDQtdC80LXQvdC90LDRjyDQtNC70Y8g0LfQsNC/0L7Qu9C90LXQvdC40Y8g0LzQsNGB0YHQuNCy0LAgcwogICAgZm9yKGludCBpID0gMDsgaSA8IG07IGkrKyl7CiAgICAgICAgc3RyaW5nIHMxLCBzMiwgczM7CiAgICAgICAgY2luID4+IHMxID4+IHMyID4+IHMzOwogICAgICAgIGludCB4MSA9IC0xLCB4MiA9IC0xOwogICAgICAgICAgICAgLy8g0J3QsNGF0L7QtNC40Lwg0LjQvdC00LXQutGB0Ysg0LIg0YPQttC1INC40LzQtdGO0YnQtdC80YHRjyDQvNCw0YHRgdC40LLQtSDQs9C00LUgc1tpXSAtINGF0YDQsNC90LjRgiDQvdCw0LfQstCw0L3QuNC1INGN0LvQtdC80LXQvdGC0LAsINCwIGkg0Y3RgtC+INC10LPQviDQvdC+0LzQtdGACiAgICAgICAgZm9yKGludCBqID0gMDsgaiA8IDEwNTsgaisrKXsKICAgICAgICAgICAgaWYoczEgPT0gc1tqXSkgeDEgPSBqOwogICAgICAgICAgICBpZihzMyA9PSBzW2pdKSB4MiA9IGo7CiAgICAgICAgfQogICAgICAgICAvLyDQldGB0LvQuCDQvdC1INC90LDRiNC70Lgg0L3QsNC30LLQsNC90LjQtSDQsiDQvNCw0YHRgdC40LLQtSBzLCDRgtC+INC00L7QsdCw0LvRj9C10LwKICAgICAgICBpZih4MSA9PSAtMSl7CiAgICAgICAgICAgIHgxID0geTsKICAgICAgICAgICAgc1t5XSA9IHMxOwogICAgICAgICAgICB5Kys7CiAgICAgICAgfQogICAgICAgIGlmKHgyID09IC0xKXsKICAgICAgICAgICAgeDIgPSB5OwogICAgICAgICAgICBzW3ldID0gczM7CiAgICAgICAgICAgIHkrKzsKICAgICAgICB9ICAgCiAgICAgICAgZVt4MV0ucGIoeDIpOwogICAgICAgICAgICAgCiAgICB9CiAgICBzdHJpbmcgc3QsIGY7CiAgICBjaW4gPj4gc3QgPj4gZjsKICAgIGludCB1ID0gLTEsIHYgPSAtMTsKICAgIC8v0KHRh9C40YLRi9Cy0LDQtdC8INC90LDQt9Cy0LDQvdC40LUg0Y3Qu9C10LzQtdC90YLQvtCyINC4INC40YnQtdC8INC40L3QtNC10LrRgdGLINCyINC80LDRgdGB0LjQstC1IHNbaV0KICAgIGZvcihpbnQgaSA9IDA7IGkgPCAxMDU7IGkrKykKICAgICAgICBkW2ldID0gaW5mOwogICAgZm9yKGludCBpID0gMDsgaSA8IDEwNTsgaSsrKXsKICAgICAgICBpZihzW2ldID09IHN0KSB1ID0gaTsKICAgICAgICBpZihzW2ldID09IGYpIHYgPSBpOwogICAgfQogICAgLy8g0KLQviDQs9C00LUg0LHRi9C70LAg0LzQvtGPINC+0YjQuNCx0LrQsAogICAgaWYoc3QgPT0gZil7CiAgICAgICAgY291dCA8PCAwOwogICAgICAgIHJldHVybiAwOwogICAgfQogICAgLy8g0JXRgdC70Lgg0LrQsNC60L7QtSAtINGC0L4g0L3QsNC30LLQsNC90LjQtSDQvdC1INC90LDRiNC70Lgg0LIg0LzQsNGB0YHQuNCy0LUgc1tpXSDQt9C90LDRh9C40YIg0LXQs9C+INC90LXRgiDQuCDQsiDQs9GA0LDRhNC1IC0+INC+0YLQstC10YIgLTEKICAJaWYodSA9PSAtMSBvciB2ID09IC0xKXsKICAgIAljb3V0IDw8IC0xOwogICAgCXJldHVybiAwOwogIAl9CiAgICBkW3VdID0gMDsKICAgIHEucHVzaCh1KTsKICAgIC8vINCX0LDQv9GD0YHQutCw0LXQvCBiZnMKICAgIHdoaWxlKCFxLmVtcHR5KCkpewogICAgICAgIGludCByID0gcS5mcm9udCgpOwogICAgICAgIHEucG9wKCk7CiAgICAgICAgZm9yKGF1dG8gdyA6IGVbcl0pewogICAgICAgICAgICBpZihkW3ddID09IGluZil7CiAgICAgICAgICAgICAgICBkW3ddID0gZFtyXSArIDE7CiAgICAgICAgICAgICAgICBxLnB1c2godyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpZihkW3ZdID09IGluZikgY291dCA8PCAtMTsKICAgIGVsc2UgY291dCA8PCBkW3ZdOwogICAgcmV0dXJuIDA7Cn0=