#include<cstring>
#include<cstdio>
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:388 ms
	Memory:2136 kb
****************************************************************/