#include <iostream>#include <algorithm>#include <queue>#include <math.h>#include <stdio.h>#include <string.h>using namespace std;#define MOD 1000000007#define maxn 110bool G[maxn][maxn];int low[maxn],pre[maxn];bool ans[maxn];int dfst;int node;int child;void init(){ dfst=0; child=0; memset(G,0,sizeof(G)); memset(ans,0,sizeof(ans)); memset(pre,0,sizeof(pre));}int dfs(int u){ int lowu; lowu=pre[u]=++dfst; int v; for(v=1;v<=node;v++){ if(G[u][v]){ if(!pre[v]){ int lowv=dfs(v); lowu=min(lowu,lowv); if(lowv>=pre[u]){ if(u!=1) ans[u]=true; else child++; } } else lowu=min(lowu,pre[v]); } } return lowu;}void deal(char *str,int u){ int t=0,v; int i; for(i=0;str[i]!=' ';i++){ if(str[i]>='0'&&str[i]<='9') { t=t*10+str[i]-'0'; } else { if(t){ v=t; G[u][v]=G[v][u]=true; } t=0; } } if(t){ v=t; v=t; G[u][v]=G[v][u]=true; }}int main(){ int u; char str[1010]; while(scanf("%d",&node),node){ init(); while(scanf("%d",&u),u){ gets(str); deal(str,u); } dfs(1); int found=0; if(child>1) ans[1]=true; for(int i=1;i<=node;i++) if(ans[i]) found++; printf("%dn",found); } return 0;}