1611 -- The Suspects
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
int n,m,k,x,y;
int s[30010];
int num[30010];
int height[30100];
void init_set()
{
for(int i=0;i<n;i++)
{
s[i]=i;
height[i]=0;
num[i]=1;
}
}
int find_set(int x)
{
if(x!=s[x])
{
s[x] = find_set(s[x]);
}
return s[x];
}
void merge_set(int x,int y)
{
x = find_set(x);
y = find_set(y);
if(height[x]==height[y])
{
height[x]+=1;
s[y]=x;
if(x!=y)
num[x]+=num[y];
// cout<<x<<" "<<num[x]<<endl;
}else if(height[x]<height[y])
{
s[x] = y;
num[y]+=num[x];
// cout<<y<<" "<<num[y]<<endl;
}else
{
s[y] = x;
num[x]+=num[y];
// cout<<x<<" "<<num[x]<<endl;
}
}
int main()
{
// cin.tie(0);
// cout.tie(0);
// ios::sync_with_stdio(false);
while(scanf("%d %d",&n,&m)!=EOF)
{
if(n==0&&m==0)
{
return 0;
}
init_set();
for(int i=1;i<=m;i++)
{
scanf("%d",&k);
scanf("%d",&x);
for(int j=2;j<=k;j++)
{
scanf("%d",&y);
merge_set(x,y);
}
}
cout<<num[find_set(0)]<<endl;
}
return 0;
}