#include<iostream>
using namespace std;
int map[101][101];
int dir[101];
bool visit[101];
int s,e;
int n,m,t;
int best=INT_MAX;
bool flag;
void solve(int t,int tol)
{   
int i;
    visit[t]
=1;
    
if(tol>best)
    {   visit[t]
=0;
        
return ;
    }
    
if(t==e)
    {   visit[t]
=0;
        
if(tol<best)
            best
=tol;
        
return ;
    }
    
for(i=1;i<=n;i++)
    {   
        
if(!visit[i]&&map[t][i])
        {  
             
if(dir[t]==i)
             {   
                 solve(i,tol);
             }
             
else
             {   
                 solve(i,tol
+1);
                 
             }
    
        }
    }
    visit[t]
=0;
}
int main()
{   
int i,j;
    scanf(
"%d%d%d",&n,&s,&e);
    
for(i=1;i<=n;i++)
    {   
        scanf(
"%d",&m);
        
bool index=0;
        
while(m--)
        {    scanf(
"%d",&t);
             
if(index==0)
             {   dir[i]
=t;
                 index
=1;
             }
             map[i][t]
=1;
        } 
    }
    solve(s,
0);
    
if(best<INT_MAX)
        printf(
"%d\n",best);
    
else
    {   
        printf(
"-1\n");
    }
    system(
"pause");
    
return 0;
}