#include<stdio.h>
#include<string.h>
#define maxn 110
#define maxm maxn * maxn
#define inf 1000000000
int min(int a, int b)
{
return a < b ? a : b;
}
struct E
{
int v, next;
}edge[maxm<<1];
int head[maxn], tot;
int n, m;
void add(int s, int t)
{
edge[tot].v = t;
edge[tot].next = head[s];
head[s] = tot++;
edge[tot].v = s;
edge[tot].next = head[t];
head[t] = tot++;
}
int low[maxn], dfn[maxn];
int sub[maxn];
int id;
void init()
{
tot = 0;
id = 0;
memset(head, -1, sizeof(head));
memset(dfn, 0, sizeof(dfn));
memset(sub, 0, sizeof(sub));
}
void dfs(int u)
{
low[u] = dfn[u] = ++id;
int i, v;
for(i = head[u]; i != -1; i = edge[i].next)
{
v = edge[i].v;
if(!dfn[v])
{
dfs(v);
low[u] = min(low[u], low[v]);
if(low[v] >= dfn[u])
sub[u]++;
}
else low[u] = min(low[u], dfn[v]);
}
}
char buf[303];
int main()
{
int i, j;
int x, y;
int sum;
while( ~scanf("%d", &n) && n)
{
init();
while( ~scanf("%d", &x) && x)
{
gets(buf);
sum = 0;
int len = strlen(buf);
buf[len] = ' ';
for(i = 0; i <= len; i++)
{
if(buf[i] == ' ')
{
if(i)add(x, sum);
sum = 0;
}
else
sum = sum * 10 + buf[i] - '0';
}
}
dfs(1);
if(sub[1] > 0) sub[1]--;
int ans = 0;
for(i = 1; i <= n; i++)
if(sub[i]) ans++;
printf("%d\n", ans);
}
return 0;
}