#include<stdio.h>#include<string.h>int n,map[27][27],used[27];int dfs(int id,int color){ int i,j,flag; for(i=1;i<=color;i++) { used[id]=i; flag = 1; for(j=1;j<id;j++) { if(map[j][id]&&used[j]==used[id]) { flag = 0; break; } } if(flag && (id == n || dfs(id+1,color))) return 1; } return 0;}int main(){ char str[30]; int i,j,one; while(scanf("%d",&n)!=EOF&&n) { one = 1; memset(map,0,sizeof(map)); for(i=1;i<=n;i++) { scanf("%s",str); for(j=2;str[j];j++,one = 0) map[i][str[j]-'A'+1] = map[str[j]-'A'+1][i] = 1; } used[1]=1; if(one) printf("1 channel needed.n"); else if(dfs(2,2)) printf("2 channels needed.n"); else if(dfs(2,3)) printf("3 channels needed.n"); else printf("4 channels needed.n"); } return 0;}