#include<bits/stdc++.h>
using namespace std;
vector<int> adj[101];
int visited[101];
int dis[101];
int par[101];
map<string, int> c;
int cnt=1;
int bfs(int s, int d){
queue<int> q;
q.push(s);
visited[s] = 1;
dis[s] = 0;
par[s] = -1;
while(!q.empty()){
int u = q.front();
q.pop();
for(int i=0; i<adj[u].size(); i++){
int v = adj[u][i];
if(visited[v]==0){
q.push(v);
visited[v] = 1;
dis[v] = dis[u]+1;
par[v] = u;
}
}
}
return dis[d];
}
int main(){
int n, e;
cin>>n>>e;
for(int i=1; i<=e; i++){
string us, vs;
int u, v;
cin>>us>>vs;
if(c[us]==0){
c[us] = cnt;
cnt++;
}
if(c[vs]==0){
c[vs] = cnt;
cnt++;
}
u = c[us];
v = c[vs];
adj[u].push_back(v);
adj[v].push_back(u);
}
string ss, ds;
int s,d;
cin>>ss>>ds;
s = c[ss];
d = c[ds];
int res = bfs(s, d);
cout<<res<<endl;
}
/*
8 9
DAC CTG
DAC RJH
DAC COM
RJH CTG
COM PRJ
CTG DNJ
GOP SHY
SHY DNJ
GOP RJH
DAC DNJ
*/
IAojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdmVjdG9yPGludD4gYWRqWzEwMV07CmludCB2aXNpdGVkWzEwMV07CmludCBkaXNbMTAxXTsKaW50IHBhclsxMDFdOwptYXA8c3RyaW5nLCBpbnQ+IGM7CmludCBjbnQ9MTsKCmludCBiZnMoaW50IHMsIGludCBkKXsKICAgIHF1ZXVlPGludD4gcTsKICAgIHEucHVzaChzKTsKICAgIHZpc2l0ZWRbc10gPSAxOwogICAgZGlzW3NdID0gMDsKICAgIHBhcltzXSA9IC0xOwoKICAgIHdoaWxlKCFxLmVtcHR5KCkpewogICAgICAgIGludCB1ID0gcS5mcm9udCgpOwogICAgICAgIHEucG9wKCk7CgogICAgICAgIGZvcihpbnQgaT0wOyBpPGFkalt1XS5zaXplKCk7IGkrKyl7CiAgICAgICAgICAgIGludCB2ID0gYWRqW3VdW2ldOwogICAgICAgICAgICBpZih2aXNpdGVkW3ZdPT0wKXsKICAgICAgICAgICAgICAgIHEucHVzaCh2KTsKICAgICAgICAgICAgICAgIHZpc2l0ZWRbdl0gPSAxOwogICAgICAgICAgICAgICAgZGlzW3ZdID0gZGlzW3VdKzE7CiAgICAgICAgICAgICAgICBwYXJbdl0gPSB1OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBkaXNbZF07Cn0KCgoKaW50IG1haW4oKXsKICAgIGludCBuLCBlOwogICAgY2luPj5uPj5lOwogICAgZm9yKGludCBpPTE7IGk8PWU7IGkrKyl7CiAgICAgICAgc3RyaW5nIHVzLCB2czsKICAgICAgICBpbnQgdSwgdjsKICAgICAgICBjaW4+PnVzPj52czsKICAgICAgICBpZihjW3VzXT09MCl7CiAgICAgICAgICAgIGNbdXNdID0gY250OwogICAgICAgICAgICBjbnQrKzsKICAgICAgICB9CiAgICAgICAgaWYoY1t2c109PTApewogICAgICAgICAgICBjW3ZzXSA9IGNudDsKICAgICAgICAgICAgY250Kys7CiAgICAgICAgfQogICAgICAgIHUgPSBjW3VzXTsKICAgICAgICB2ID0gY1t2c107CiAgICAgICAgYWRqW3VdLnB1c2hfYmFjayh2KTsKICAgICAgICBhZGpbdl0ucHVzaF9iYWNrKHUpOwogICAgfQoKICAgIHN0cmluZyBzcywgZHM7CiAgICBpbnQgcyxkOwogICAgY2luPj5zcz4+ZHM7CiAgICBzID0gY1tzc107CiAgICBkID0gY1tkc107CiAgICBpbnQgcmVzID0gYmZzKHMsIGQpOwoKICAgIGNvdXQ8PHJlczw8ZW5kbDsKCn0KCi8qCjggOQpEQUMgQ1RHCkRBQyBSSkgKREFDIENPTQpSSkggQ1RHCkNPTSBQUkoKQ1RHIEROSgpHT1AgU0hZClNIWSBETkoKR09QIFJKSApEQUMgRE5KCiov