#include<bits/stdc++.h>
using namespace std;
const int N=110,inf=0x7f;
typedef pair<int,int> pii;
int n,a,b;
vector<pii> tu[N];
deque<int> pq;
int dis[N];
bool flag=false;
bool vis[N];
void bfs(){
int cur;
dis[a]=0;
pq.push_front(a);
while(!pq.empty()){
cur=pq.front();
pq.pop_front();
if(vis[cur]) continue;
vis[cur]=true;
if(cur==b) flag=true;
for(auto vv:tu[cur]){
if( dis[cur]+vv.first<dis[vv.second] && cur!=vv.second ){
dis[vv.second] = dis[cur] + vv.first;
if(vv.first==0) pq.push_front(vv.second);
else pq.push_back(vv.second);
}
}
}
}
int main(){
cin>>n>>a>>b;
int k,v;
memset(tu,inf,sizeof(tu));
memset(dis,inf,sizeof(dis));
memset(vis,false,sizeof(vis));
for(int i=1;i<=n;i++){
cin>>k;
for(int j=1;j<=k;j++){
cin>>v;
if(j==1) tu[i].push_back({0,v});
else tu[i].push_back({1,v});
}
}
bfs();
if(flag) cout<<dis[b]<<"\n";
else cout<<-1<<"\n";
return 0;
}