#include<bits/stdc++.h>
using namespace std;
int n, m, dis[505][505], a[505];
int main() {
cin >> m >> n ;
string s;
getline(cin, s);
memset(dis, 0x3f, sizeof(dis));
int INF = dis[1][1];
for(int k = 1; k <= m; k++) {
getline(cin, s);
stringstream ss(s);
int ls = 1;
while(ss >> a[ls]) ls++;
ls--;
for(int i = 1; i <= ls; i++) {
for(int j = i + 1; j <= ls; j++)
dis[a[i]][a[j]] = 1;
}
}
for(int i = 1; i <= n; i++) dis[i][i] = 0;
for(int k = 1; k <= n; k++) {
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= n; j++) {
if(dis[i][j] > dis[i][k] + dis[k][j])
dis[i][j] = dis[i][k] + dis[k][j];
}
}
}
if(dis[1][n] == INF) cout << "NO" << endl;
else cout << dis[1][n] - 1 << endl;
return 0;
}