30 lines
695 B
ObjectPascal

var i,j,n,m,k:integer;
a:array[0..500,0..500]of longint;
b:array[0..500]of longint;
begin
assign(input,'travel.in');reset(input);
assign(output,'travel.out');rewrite(output);
readln(m,n);
for i:=1 to n do
for j:=1 to n do
a[i,j]:=maxlongint div 3;
for i:=1 to m do
begin
j:=0;
while not eoln do
begin
inc(j);
read(b[j]);
for k:=1 to j-1 do
a[b[k],b[j]]:=1;
end;readln;
end;
for k:=1 to n do
for i:=1 to n do
for j:=1 to n do
if a[i,j]>a[i,k]+a[k,j] then
a[i,j]:=a[i,k]+a[k,j];
if a[1,n]=maxlongint div 3 then writeln('NO')
else writeln(a[1,n]-1);
close(input);close(output);
end.