#include<bits/stdc++.h>
using namespace std;
int n, m, s, minn, k;
int Map[510][510], a[510], dis[510];
char c;
bool f[510];
int main() {
memset(Map, 0x3f, sizeof(Map));
scanf("%d%d\n", &m, &n);
if( n == 1 ) {
cout << 0;
return 0;
}
while ( m-- ) {
c = ' ';
int i = 1;
for ( ; c != '\n' && c != '\r'; i++ ) scanf("%d%c", &a[i], &c);
for ( int j = 1; j < i; j++ ) {
for ( int l = j + 1; l < i; l++ ) Map[a[j]][a[l]] = 1;
}
}
for ( int i = 1; i <= n; i++ ) dis[i] = Map[1][i];
dis[1] = 0;
f[1] = 1;
for ( int i = 1; i < n; i++ ) {
minn = INT_MAX;
for ( int j = 1; j <= n; j++ ) {
if ( f[j] == 0 && dis[j] < minn ) {
k = j;
minn = dis[j];
}
}
f[k] = 1;
if ( k == n ) break;
for ( int j = 1; j <= n; j++ ) {
if ( f[j] == 0 && dis[k] + Map[k][j] < dis[j] ) dis[j] = dis[k] + Map[k][j];
}
}
if ( dis[n] < 0x3f ) cout << dis[n] - 1;
else cout << "NO";
return 0;
}