#include #include #include #include #include #include #include #include #include #include #include using namespace std; vector Org[30][30]; char Trs[90][5]; char st[60]; int f[60][60][30]; int Max2(int a,int b) { return a>b?a:b; } int main() { int N,i,j,k,t,L,Ans; for (;;) { scanf("%d",&N); if (N==0) break; for (i=0;i<='T'-'A';i++) for (j=0;j<='T'-'A';j++) Org[i][j].clear(); for (i=0;iMax2(f[k+1][i+j][Trs[t][2]-'A'],f[i][k][Trs[t][1]-'A'])+1)) f[i][i+j][Trs[t][0]-'A']=Max2(f[k+1][i+j][Trs[t][2]-'A'],f[i][k][Trs[t][1]-'A'])+1; } } Ans=-1; for (i=0;i<='T'-'A';i++) if (Ans==-1 || (f[0][L-1][i]!=-1 && Ans>f[0][L-1][i])) Ans=f[0][L-1][i]; printf("%d\n",Ans); } }