#include<iostream>#include<cstdio>#include<cstring>usingnamespace std;bool mp[30][30], color[30], ok;int vis[30][30], n, colornum;boolisok(int id,int icolor){for(int i =0; i < n; i++){if(mp[id][i]){if(vis[i][id]== icolor)returnfalse;}}returntrue;}voiddfs(int point,int colorid){bool flag =false;if(point == n || colornum ==4){//colornum == 4四色图原理
ok =true;return;}for(int i =0; i < n; i++){if(mp[i][point]) vis[point][i]= colorid;}for(int i =1; i <= colornum; i++){if(isok(point +1, i)){
flag =true;//pdfs(point +1, i);if(ok)return;}}if(!flag){
colornum ++;dfs(point +1, colornum);}}intmain(){char str[50];while(cin >> n && n){memset(mp,false,sizeof(mp));for(int i =0; i < n; i++){scanf("%s", str);int len =strlen(str), s = str[0]-'A';for(int k =2; k < len; k++){int e = str[k]-'A';
mp [s][e]=true;}}memset(vis,-1,sizeof(vis));
colornum =1;
ok =false;dfs(0,1);if(colornum ==1){printf("1 channel needed.\n");}else{printf("%d channels needed.\n", colornum);}}return0;}