1 #include <iostream>
2 #include <cstdio>
3 #include <cmath>
4 #include <cstring>
5 #include <algorithm>
6 #include <queue>
7 #include <stack>
8 #include <vector>
9 #include <iomanip>
10 using namespace std;
11 const int mmax=200;
12 int e[2200][2200],d[2200],n,vis[2200];
13 char g[2200][20];
14 int weight(int k,int e)
15 {
16 int sum=0;
17 for(int i=0;i<7;i++)
18 {
19 if(g[k][i]!=g[e][i])
20 sum++;
21 }
22 return sum;
23 }
24 int main(int argc, char *argv[])
25 {
26 while(scanf("%d",&n)!=EOF)
27 {
28 if(n==0)
29 break;
30 for(int i=0;i<n;i++)
31 scanf("%s",g[i]);
32 for(int i=0;i<=n;i++)
33 for(int j=0;j<=n;j++)
34 if(i==j)
35 e[i][j]=0;
36 else
37 e[i][j]=1e9;
38 for(int i=0;i<n;i++)
39 {
40 for(int j=i+1;j<n;j++)
41 {
42 e[i][j]=e[j][i]=weight(i,j);
43 }
44 }
45 memset(d,0x3f3f3f3f,sizeof(d));
46 memset(vis,0,sizeof(vis));
47 d[0]=0;
48 int ans=0;
49 for(int i=0;i<n;i++)
50 {
51 int end=-1;
52 for(int j=0;j<n;j++)
53 {
54 if(!vis[j]&&(end==-1||d[end]>d[j]))
55 end=j;
56 }
57 ans+=d[end];
58 vis[end]=1;
59 for(int j=0;j<n;j++)
60 {
61 if(!vis[j]&&d[j]>e[end][j])
62 d[j]=e[end][j];
63 }
64 }
65 printf("The highest possible quality is 1/%d.\n",ans);
66
67 }
68 return 0;
69 }