#include <bits/stdc++.h>
#define loop(a,b,c) for(int a=b;a<c;a++)
#define loopm(a,b) for(int a=b;a>=0;a--)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define f front()
#define b back()
#define sz(v) v.size()
#define all(v) v.begin(),v.end()
#define reset(a,b) memset(a,b,sizeof a)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef vector<int> vi;
typedef pair<int,int> ii;
typedef vector<ii> vii;
typedef pair<int,ii> iii;
typedef vector<iii> viii;
typedef map<int,int> mii;
typedef map<string,int> msi;
//templates end here
vii v[10001];
int main()
{
int N;
int T;
scanf("%d",&T);
loop(i,1,T+1)
{
int maks=-1;
int Q;
loop(j,1,10001)v[j].clear();
scanf("%d",&N);
loop(j,0,N)
{
int idx,a,M;
scanf("%d",&M);
loop(k,0,M)
{
scanf("%d",&a);
maks=max(maks,a);
if(k==0)idx=a;
else
{
v[idx].pb(mp(a,1));
v[a].pb(mp(idx,1));
idx=a;
}
}
}
int g,h;
scanf("%d",&Q);
vi ans;
vi bfs;
loop(j,0,Q)
{
bool cek=0;
bfs.assign(maks+1,-1);
scanf("%d %d",&g,&h);
if(sz(v[g])==0||sz(v[h])==0)ans.pb(-1);
else
{
queue<ii> pq;
pq.push(mp(0,g));
while(!pq.empty())
{
ii z=pq.front();
pq.pop();
loop(k,0,sz(v[z.se]))
{
if(bfs[v[z.se][k].fi]==-1)
{
bfs[v[z.se][k].fi]=1;
pq.push(mp(z.fi+1,v[z.se][k].fi));
}
}
if(z.se==h)
{
ans.pb(z.fi);cek=1;break;
}
}
if(!cek)ans.pb(-1);
}
}
printf("Case #%d:\n",i);
loop(j,0,sz(ans))cout<<ans[j]<<endl;
ans.clear();
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbG9vcChhLGIsYykgZm9yKGludCBhPWI7YTxjO2ErKykKI2RlZmluZSBsb29wbShhLGIpIGZvcihpbnQgYT1iO2E+PTA7YS0tKQojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgZiBmcm9udCgpCiNkZWZpbmUgYiBiYWNrKCkKI2RlZmluZSBzeih2KSB2LnNpemUoKQojZGVmaW5lIGFsbCh2KSB2LmJlZ2luKCksdi5lbmQoKQojZGVmaW5lIHJlc2V0KGEsYikgbWVtc2V0KGEsYixzaXplb2YgYSkKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1bGw7CnR5cGVkZWYgdmVjdG9yPGludD4gdmk7CnR5cGVkZWYgcGFpcjxpbnQsaW50PiBpaTsKdHlwZWRlZiB2ZWN0b3I8aWk+IHZpaTsKdHlwZWRlZiBwYWlyPGludCxpaT4gaWlpOwp0eXBlZGVmIHZlY3RvcjxpaWk+IHZpaWk7CnR5cGVkZWYgbWFwPGludCxpbnQ+IG1paTsKdHlwZWRlZiBtYXA8c3RyaW5nLGludD4gbXNpOwoKLy90ZW1wbGF0ZXMgZW5kIGhlcmUKCnZpaSB2WzEwMDAxXTsKCmludCBtYWluKCkKewoJaW50IE47CglpbnQgVDsKCXNjYW5mKCIlZCIsJlQpOwoJbG9vcChpLDEsVCsxKQoJewoJCWludCBtYWtzPS0xOwoJCWludCBROwoJCWxvb3AoaiwxLDEwMDAxKXZbal0uY2xlYXIoKTsKCQlzY2FuZigiJWQiLCZOKTsKCQlsb29wKGosMCxOKQoJCXsKCQkJaW50IGlkeCxhLE07CgkJCXNjYW5mKCIlZCIsJk0pOwoJCQlsb29wKGssMCxNKQoJCQl7CgkJCQlzY2FuZigiJWQiLCZhKTsKCQkJCW1ha3M9bWF4KG1ha3MsYSk7CgkJCQlpZihrPT0wKWlkeD1hOwoJCQkJZWxzZQoJCQkJewoJCQkJCXZbaWR4XS5wYihtcChhLDEpKTsKCQkJCQl2W2FdLnBiKG1wKGlkeCwxKSk7CgkJCQkJaWR4PWE7CgkJCQl9CgkJCX0KCQl9CgkJaW50IGcsaDsKCQlzY2FuZigiJWQiLCZRKTsKCQl2aSBhbnM7CgkJdmkgYmZzOwoJCWxvb3AoaiwwLFEpCgkJewoJCQlib29sIGNlaz0wOwoJCQliZnMuYXNzaWduKG1ha3MrMSwtMSk7CgkJCXNjYW5mKCIlZCAlZCIsJmcsJmgpOwoJCQlpZihzeih2W2ddKT09MHx8c3oodltoXSk9PTApYW5zLnBiKC0xKTsKCQkJZWxzZQoJCQl7CgkJCQlxdWV1ZTxpaT4gcHE7CgkJCQlwcS5wdXNoKG1wKDAsZykpOwoJCQkJd2hpbGUoIXBxLmVtcHR5KCkpCgkJCQl7CgkJCQkJaWkgej1wcS5mcm9udCgpOwoJCQkJCXBxLnBvcCgpOwoJCQkJCWxvb3AoaywwLHN6KHZbei5zZV0pKQoJCQkJCXsKCQkJCQkJaWYoYmZzW3Zbei5zZV1ba10uZmldPT0tMSkKCQkJCQkJewoJCQkJCQkJYmZzW3Zbei5zZV1ba10uZmldPTE7CgkJCQkJCQlwcS5wdXNoKG1wKHouZmkrMSx2W3ouc2VdW2tdLmZpKSk7CgkJCQkJCX0KCQkJCQl9CgkJCQkJaWYoei5zZT09aCkKCQkJCQl7CgkJCQkJCWFucy5wYih6LmZpKTtjZWs9MTticmVhazsJCgkJCQkJfQoJCQkJfQkKCQkJCWlmKCFjZWspYW5zLnBiKC0xKTsKCQkJfQoJCX0KCQlwcmludGYoIkNhc2UgIyVkOlxuIixpKTsKCQlsb29wKGosMCxzeihhbnMpKWNvdXQ8PGFuc1tqXTw8ZW5kbDsKCQlhbnMuY2xlYXIoKTsKCX0KfQo=