#include<bits/stdc++.h>
using namespace std;
vector<short>e[1001];
short n,m,s,a[1001],x,y,g[1001],ans,top,nn,c;
bool z[1005];
int main(){
cin>>n>>m;
nn=n;
for(int i=1;i<=m;i++){
cin>>s;
for(int j=1;j<=s;j++){
cin>>a[j];
}
x=1;
for(int j=a[1];j<=a[s];j++){
if(a[x]!=j){
for(int k=1;k<=s;k++){
e[a[k]].push_back(j);
g[j]++;
}
}
if(a[x]==j)x++;
}
}
for(int i=1;i<=n;i++){
sort(e[i].begin(),e[i].end());
for(int j=0;j<e[i].size();j++){
if(j==e[i].size()-1)break;
if(e[i][j]==e[i][j+1]&&e[i][j]!=e[i][e[i].size()-1]){
c=e[i][j];
e[i][j]=e[i][e[i].size()-1];
e[i][e[i].size()-1]=c;
g[c]--;
e[i].pop_back();
}
if(e[i][j]==e[i][j+1]&&e[i][j]==e[i][e[i].size()-1]){
for(int k=j+1;k<e[i].size();k++){
g[e[i][e[i].size()-1]]--;
e[i].pop_back();
}
break;
}
}
}
for(int i=1;i<=n;i++)z[i]=1;
while(nn){
ans++;
top=0;
for(int i=1;i<=n;i++){
if(!g[i]&&z[i]){
z[i]=0;
a[++top]=i;
nn--;
}
}
for(int i=1;i<=top;i++){
for(int j=0;j<e[a[i]].size();j++){
g[e[a[i]][j]]--;
}
e[a[i]].clear();
}
}
cout<<ans<<endl;
return 0;
}