#include<stdio.h>
int father[30004];
void set(int n)
{
for(int i=0;i<n;i++)
father[i]=i;
}
int find(int x)
{
if(x==father[x])
return father[x];
return find(father[x]);
}
void merge(int a,int b)
{
int x=find(a);
int y=find(b);
if(x<=y)
father[y]=x;
else
father[x]=y;
}
int main()
{
int m,n;
while(scanf("%d%d",&m,&n),(m+n))
{
set(m);
while(n--)
{
int p;
scanf("%d",&p);
int num1,num2;
scanf("%d",&num1);
for(int i=1;i<p;i++)
{
scanf("%d",&num2);
merge(num1,num2);
}
}
int ans=0;
for(int i=0;i<m;i++)
{
if(find(0)==find(i))
ans++;
}
printf("%d\n",ans);
}
return 0;
}
int father[30004];
void set(int n)
{
for(int i=0;i<n;i++)
father[i]=i;
}
int find(int x)
{
if(x==father[x])
return father[x];
return find(father[x]);
}
void merge(int a,int b)
{
int x=find(a);
int y=find(b);
if(x<=y)
father[y]=x;
else
father[x]=y;
}
int main()
{
int m,n;
while(scanf("%d%d",&m,&n),(m+n))
{
set(m);
while(n--)
{
int p;
scanf("%d",&p);
int num1,num2;
scanf("%d",&num1);
for(int i=1;i<p;i++)
{
scanf("%d",&num2);
merge(num1,num2);
}
}
int ans=0;
for(int i=0;i<m;i++)
{
if(find(0)==find(i))
ans++;
}
printf("%d\n",ans);
}
return 0;
}