#include <iostream>
#include <cstdio>
#include <memory.h>
using namespace std;
const int MAX=25;
struct Vertex{
int num,dir;
};
int map[MAX][MAX],vis[MAX],
num,ttt,c,start,end;
Vertex q[50],v,t;
void bfs(){
bool findFlag=0;
int front=1,rear=2,ans=0;
q[front].num=start;
q[front].dir=0;
vis[start]=1;
while(front<rear&&!findFlag){
v=q[front++];
for(int i=1;i<=20;i++){
if(map[v.num][i]&&!vis[i]){
if(i==end){
ans=v.dir+1;
findFlag=1;
break;
}
t.num=i;
t.dir=v.dir+1;
vis[i]=1;
q[rear++]=t;
}
}
}
printf("%2d to %2d: %d/n",start,end,ans);
}
int main()
{
freopen("i.txt","r",stdin);
int caseNum=1;
while(cin>>num){
memset(map,0,sizeof(map));
for(int i=0;i<num;i++){
cin>>ttt;
map[1][ttt]=map[ttt][1]=1;
}
for(int i=2;i<=19;i++){
cin>>num;
while(num--){
cin>>ttt;
map[i][ttt]=map[ttt][i]=1;
}
}
cout<<"Test Set #"<<caseNum++<<endl;
cin>>c;
//cout<<c<<endl;
while(c--){
cin>>start>>end;
//cout<<start<<" "<<end<<endl;
memset(vis,0,sizeof(vis));
bfs();
}
cout<<endl;
}
return 0;
}
简单的bfs