/*
Violent search
*/
# Include<Iostream>
Using NamespaceSTD;
BoolG [26] [26];
IntCl [26]={0};
IntN;
Bool DFS ( Int K, Int M)
{
Int I, J;
Bool Flag;
For (I = 0 ; I < M; I ++ )
{
For (Flag = True , Cl [k] = I, j = 0 ; J < K; j ++ )
If (G [k] [J] && Cl [k] = Cl [J])
{
Flag = False ;
Break ;
}
If (Flag && (K = N - 1 | DFS (K + 1 , M )))
Return True ;
}
Return False ;
}
Int Main ()
{
Int I, j, T;
Bool Conn;
Char STR [ 50 ];
While (Scanf ( " % D " , & N) && N)
{
Memset (G, 0 , Sizeof (G ));
For (Conn = False , I = 0 ; I < N; I ++ )
For (Scanf ( " % S " , STR), J = 2 ; STR [J]; j ++ , Conn = True )
{
T = STR [J] - ' A ' ;
G [I] [T] = True ;
G [T] [I] = True ;
}
If ( ! Conn)
Printf ( " 1 channel needed. \ n " );
Else If (DFS ( 1 , 2 ))
Printf ( " 2 channels needed. \ n " );
Else If (DFS ( 1 , 3 ))
Printf ( " 3 channels needed. \ n " );
Else
Printf ( " 4 channels needed. \ n " );
}
Return 0 ;
}