#include <iostream>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
bool stops[n][n];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
stops[i][j]=false;
}
}
for(int i=0;i<m;i++){
int input[n+1];
int temp1;
cin>>temp1;
input[0]=temp1;
for(int j=1;j<=temp1;j++){
int temp2;
cin>>temp2;
input[j]=temp2;
}
int x=input[1];
int y=input[input[0]];
int size=y-x+1;
bool b[size];
for(int j=0;j<size;j++){
b[j]=false;
}
for(int j=1;j<=input[0];j++){
b[input[j]-x]=true;
}
for(int j=0;j<size;j++){
if(b[j]){
continue;
}else{
for(int k=0;k<size;k++){
if(j==k){
continue;
}else if(b[k]){
stops[j+x-1][k+x-1]=true;
}
}
}
}
}
int a[n],c[n],count=0;
int ap=0,cp=0;
bool flag=true;
while(flag){
flag=false;
for(int i=0;i<n;i++){
for(int j=0;j<cp;j++){
if(i==c[j]){
goto AAA;
}
}
for(int j=0;j<n;j++){
if(stops[j][i]){
goto AAA;
}
}
a[ap]=i;
ap++;
c[cp]=i;
cp++;
flag=true;
AAA:
;
}
while(ap>0){
ap--;
int temp=a[ap];
for(int i=0;i<n;i++){
stops[temp][i]=false;
}
}
count++;
}
cout<<(--count);
return 0;
}