#include <stdio.h>#include <iostream>using namespace std;const int MAXN = 30001; int pa[MAXN]; int rank[MAXN]; int num[MAXN];void make_set(int x){ pa[x] = x; rank[x] = 0; num[x] = 1;}int find_set(int x){ int r = x, temp; while(pa[r] != r) r = pa[r]; while(x != r) { temp = pa[x]; pa[x] = r; x = temp; } return x;}void union_set(int x, int y){ x = find_set(x); y = find_set(y); if(x == y)return ; if(rank[x] > rank[y]) { pa[y] = x; num[x] += num[y]; } else { pa[x] = y; if(rank[x] == rank[y]) rank[y]++; num[y] += num[x]; }}int main(){ int n, m, x, y, i, t, j; while(scanf("%d%d", &n, &m)) { if(m==n && n == 0) break; if(m == 0) { cout << "1n"; continue; } for(i = 0; i < n; i++) make_set(i); for(i = 0; i < m; i++) { scanf("%d", &t); scanf("%d", &x); for(j = 1; j < t; j++){ scanf("%d", &y); union_set(x, y); x = y; } } x = find_set(0); cout << num[x] << endl; } return 0;}