#include<bits/stdc++.h>
using namespace std;
#define int long long
int m,n,s,x,y,dis[3000][3000],q[3000];
void fly()
{
for(int k = 1; k <= n; k++)
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
if(i != j && i != k && k != j && dis[i][k] + dis[k][j] < dis[i][j])
dis[i][j] = dis[i][k] + dis[k][j];
}
signed main()
{
memset(dis,0x3f,sizeof(dis));
scanf("%lld%lld",&m,&n);
for(int i = 1;i <= n;i++) dis[i][i] = 0;
while(m--)
{
int a,b = 0;
char p;
while(scanf("%lld%c",&a,&p) > 0)
{
q[++b] = a;
if(p == '\n') break;
}
for(int j = 1; j <= b; j++)
for(int k = j + 1; k <= b; k++)
if(j != k && q[j] != 0)
dis[q[j]][q[k]] = 1;
memset(q,0,sizeof(q));
}
fly();
if(dis[1][n] < 100000) printf("%lld",dis[1][n] - 1);
else printf("NO");
return 0;
}