program s89;
var
n,i,j,k,w,min:longint;
a:array[1..60,0..6]of longint;
dui:array[1..60,0..60]of longint;
f:array[0..60]of integer;
shou:array[1..60]of boolean;
procedure hui(sum:longint);
var
i,j,i1,x:longint;
begin
if sum>=min then exit;
if f[0]=n then begin
if sum<min then min:=sum; exit; end;
i1:=1;
while f[i1]<>0 do inc(i1);
for i:=1 to dui[i1,0] do
if shou[dui[i1,i]]=false then begin x:=dui[i1,i];
shou[dui[i1,i]]:=true;
for j:=1 to a[x,0] do
begin
inc(f[a[x,j]]);
if f[a[x,j]]=1 then inc(f[0]);
end;
hui(sum+1);
shou[dui[i1,i]]:=false;
for j:=1 to a[x,0] do
begin
dec(f[a[x,j]]);
if f[a[x,j]]=0 then dec(f[0]);
end;
end;
end;
begin
readln(n,w); min:=60;
for i:=1 to w do
begin
read(a[i,0]);
for j:=1 to a[i,0] do begin
read(a[i,j]);
inc(dui[a[i,j],0]);
dui[a[i,j],dui[a[i,j],0]]:=i;
end;
end;
hui(0);
writeln(min);
end.
var a:array[0..1000,0..1000]of integer;
b:array[0..3600,0..1000]of integer;
boo:array[0..3601]of boolean;
n,w,i,j,min:longint;
procedure play(k,ans:integer);
var i,j:longint;
begin
if ans>=min then exit;
if k=n+1 then begin
if ans<min then min:=ans;
exit;
end;
for i:=1 to b[k,0] do begin
for j:=1 to a[b[k,i],0] do boo[a[b[k,i],j]]:=true;
for j:=k+1 to n+1 do if boo[j]=false then begin play(j,ans+1);break;end;
for j:=1 to a[b[k,i],0] do boo[a[b[k,i],j]]:=false;
end;
end;
begin
readln(n,w);
for i:=1 to n do b[i,0]:=0;
for i:=1 to w do begin
read(a[i,0]);
for j:=1 to a[i,0] do begin
read(a[i,j]);
inc(b[a[i,j],0]);b[a[i,j],b[a[i,j],0]]:=i;
end;
readln;
end;
for i:=1 to n+1 do boo[i]:=false;
min:=maxlongint;
play(1,0);
writeln(min);
end.
var a:array[0..1000,0..1000]of integer;
b:array[0..3600,0..1000]of integer;
boo:array[0..3601]of boolean;
n,w,i,j,min:longint;
procedure play(k,ans:integer);
var i,j:longint;
begin
if ans>=min then exit;
if k=n+1 then begin
if ans<min then min:=ans;
exit;
end;
for i:=1 to b[k,0] do begin
for j:=1 to a[b[k,i],0] do boo[a[b[k,i],j]]:=true;
for j:=k+1 to n+1 do if boo[j]=false then begin play(j,ans+1);break;end;
for j:=1 to a[b[k,i],0] do boo[a[b[k,i],j]]:=false;
end;
end;
begin
readln(n,w);
for i:=1 to n do b[i,0]:=0;
for i:=1 to w do begin
read(a[i,0]);
for j:=1 to a[i,0] do begin
read(a[i,j]);
inc(b[a[i,j],0]);b[a[i,j],b[a[i,j],0]]:=i;
end;
readln;
end;
for i:=1 to n+1 do boo[i]:=false;
min:=maxlongint;
play(1,0);
writeln(min);
end.