#include<stdio.h>
#include<string.h>
#include<stdbool.h>
bool a[1001],f[1001];
int r[1001],b[1001],sk[1001];
bool e[1001][1001];
int main()
{
int n,m,q;
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
memset(a,0,sizeof(a));
scanf("%d",&q);
for(int j=1;j<=q;j++)
{
scanf("%d",&b[j]);
a[b[j]]=1;
}
for(int j=b[1];j<=b[q];j++)
if(!a[j])
for(int k=1;k<=q;k++)
if(!e[j][b[k]])
{
e[j][b[k]]=1;
r[b[k]]++;
}
}
int ans=0,top;
while(1)
{
top=0;
for(int i=1;i<=n;i++)
if(!r[i]&&!f[i]){
sk[++top]=i;
f[i]=1;
}
if(top==0)break;
for(int k=1;k<=top;k++)
{
for(int i=1;i<=n;i++)
if(e[sk[k]][i])
{
e[sk[k]][i]=0;
r[i]--;
}
}
ans++;
}
printf("%d",ans);
return 0;
}
/**************************************************************
Problem: 2323
User: admin
Language: C
Result: Accepted
Time:477 ms
Memory:2136 kb
****************************************************************/