#include<bits/stdc++.h>
using namespace std;
int n,m,ru[1005],a[1005][1005],s,k,cnt=-1,st,e;
bool vis[1005];
queue<int>q;
int main(){
ios::sync_with_stdio(false);
cin>>n>>m;
for(int i=0;i<m;i++){
memset(vis,0,sizeof(vis));
cin>>s;
for(int j=0;j<s;j++){
cin>>k;
if(j==0)st=k;
if(j==s-1)e=k;
vis[k]=1;
}
for(int j=st;j<=e;j++){
if(!vis[j]){
for(int z=st;z<=e;z++){
if(vis[z]&&a[z][j]==0){
a[z][j]=1;
ru[j]++;
}
}
}
}
}
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++){
a[0][i]=1;
ru[i]++;
}
q.push(0);
vis[0]=1;
while(!q.empty()){
cnt++;
while(!q.empty()){
int x=q.front();
for(int i=1;i<=n;i++){
if(a[x][i]&&vis[i]==0){
ru[i]--;
}
}
q.pop();
}
for(int i=1;i<=n;i++){
if(ru[i]==0&&vis[i]==0){
vis[i]=1;
q.push(i);
}
}
}
cout<<cnt<<endl;
return 0;
}