Code:
#include<bits/stdc++.h>
using namespace std;
string s;
int a[10001],dis[501][501],sum,cnt;
int main() {
int m,n;
cin>>m>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
dis[i][j]=0x3f;
dis[i][i]=0;
}
getchar();
for(int i=1; i<=m; i++) {
sum=cnt=0;
getline(cin,s);
int len=s.length();
for(int j=0; j<len; j++) {
if(s[j]>='0'&&s[j]<='9')
sum=sum*10+s[j]-'0';
else {
a[++cnt]=sum;
sum=0;
}
}
a[++cnt]=sum;
for(int j=1; j<=cnt; j++)
for(int k=j+1; k<=cnt; k++){
int u=a[j],v=a[k];
dis[u][v]=1;
}
}
for(int k=1; k<=n; k++)
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
if(dis[1][n]==0x3f)cout<<"NO"<<endl;
else cout<<dis[1][n]-1<<endl;
return 0;
}