#include<iostream>
#include<cstring>
using namespace std;
#define maxn 30005
int par[maxn],n,m,k[505],data[505][30005];
bool visit[maxn];
int findPar(int x){
if(par[x]!=x)par[x] = findPar(par[x]);
return par[x];
}
int main(){
while(scanf("%d%d",&n,&m)==2&&n){
memset(visit,false,sizeof visit);
for(int i=0;i<maxn;i++){
par[i] = i;
}
for(int i=0;i<m;i++){
scanf("%d",&k[i]);
for(int j=0;j<k[i];j++){
scanf("%d",&data[i][j]);
}
}
for(int i=0;i<m;i++){
for(int j=0;j<k[i];j++){
if(j!=0){
if(findPar(data[i][j])!=data[i][j]){
int px = findPar(data[i][0]);
int py = findPar(data[i][j]);
par[px] = py;
}
else{
par[data[i][j]] = findPar(data[i][0]);
}
}
}
}
int result = 0;
int tmp = findPar(0);
visit[0] = true;
for(int i=0;i<m;i++){
for(int j=0;j<k[i];j++){
if(!visit[data[i][j]]&&findPar(data[i][j])==tmp){
visit[data[i][j]] = true;
result++;
}
}
}
printf("%d\n",result+1);
}
return 0;
}