#include<bits/stdc++.h>
using namespace std;
const int N=505;
int m,n,a[N][N],t[505],dis[N],f[N],x;
char s;
void dijkstra(int x){
memset(dis,0x3f,sizeof dis);
dis[x]=0;
for(int i=1;i<=n;i++){
int minn=1e9,u=0;
for(int j=1;j<=n;j++){
if(!f[j]&&minn>dis[j]){
minn=dis[j];
u=j;
}
}
if(u==0) break;
f[u]=1;
for(int j=1;j<=n;j++){
if(!f[j]&&dis[j]>dis[u]+a[u][j]){
dis[j]=dis[u]+a[u][j];
}
}
}
}
int main(){
scanf("%d%d\n",&m,&n);
memset(a,0x3f,sizeof a);
while(m--){
int k=0;
memset(t,0,sizeof t);
s=' ';
while(s!='\n'){
scanf("%d%c",&x,&s);
t[++k]=x;
}
for(int i=1;i<=k;i++)
for(int j=i+1;j<=k;j++){
a[t[i]][t[j]]=1;
}
}
dijkstra(1);
if(dis[n]==0x3f3f3f3f) cout<<"No";
else cout<<dis[n]-1;
return 0;
}