#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2e2 + 10;
int g[N][N];
int d[N];//记录像谁拿光盘
int n, cont = 0;
void floyd() {
for (int k = 1; k <= n; k++) {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
g[i][j] = g[i][j] || g[i][k] && g[k][j];
}
}
}
}
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
int tmp;
cin >> tmp;
while (tmp != 0) {
g[i][tmp] = 1;
cin >> tmp;
}
}
floyd();//所有的边都维护完成
//输出g
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (g[i][j] == 1) {
d[j] = d[i];
}
}
}
sort(d + 1, d + n + 1);
int disk = -1;
for (int i = 1; i <= n; i++) {
if (disk != d[i]) {
disk = d[i];
cont++;
}
}
cout << cont;
return 0;
}
help!!!!!!!!!!!!!!!!!!!!!!!!