#include #include #include #include #include #include #include #include #include using namespace std; const int MAXN=1010; const int INF=0x3f3f3f3f; int dis[MAXN][MAXN]; bool used[MAXN]; vectorvec[MAXN]; queueque; void bfs(int i) { memset(used,false,sizeof(used)); dis[i][i]=0; used[i]=true; que.push(i); while(!que.empty()) { int t=que.front(); que.pop(); int m=vec[t].size(); for(int j=0;jdis[i][t]+1) dis[i][v]=dis[i][t]+1; que.push(v); used[v]=true; } } } mapmp; int main() { string str; string str2; int n,m,i,j; while(scanf("%d",&n)==1 && n) { mp.clear(); for(i=0;i>str; mp[str]=i; } for(i=0;i>str>>str2; int t1=mp[str]; int t2=mp[str2]; vec[t1].push_back(t2); vec[t2].push_back(t1); } for(i=0;idis[i][j]?ans:dis[i][j]; if(ans==INF)ans=-1; printf("%d\n",ans); } return 0; }