#include<bits/stdc++.h>
using namespace std;
int G[1010][1010];
const int inf=1e7+10;
int n,a,b;
int floyd()
{
for(int k=1;k<=n;k++)
for(int u=1;u<=n;u++)
for(int v=1;v<=n;v++)
G[u][v]=min(G[u][v],G[u][k]+G[k][v]);
}
int main()
{
cin>>n>>a>>b;
memset(G,inf,sizeof(G));
for(int i=1;i<=n;i++)
G[i][i]=0;
for(int i=1;i<=n;i++)
{
int m;
cin>>m;
for(int j=1;j<=m;j++)
{
int x;
cin>>x;
if(j==1)
G[i][x]=1;
else
G[i][x]=0;
}
}
floyd();
if(G[a][b]!=inf)
cout<<G[a][b];
else
cout<<-1;
return 0;
}