#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;
const int N=2005;
const int Max=100;
int f[N],a[N],d[N][N];
int n,total;
string str[N];
int diff(string str1,string str2)
{
int num=0;
for(int i=0;i<str1.size();i++)
if(str1[i]!=str2[i]) num++;
return num;
}
void path()
{
int k=1;
f[1]=1;
total=0;
for(int i=2;i<=n;i++)
{
int mcost=Max;
for(int j=2;j<=n;j++)
{
if(!f[j]&&(a[j]<mcost))
{
mcost=a[j];
k=j;
}
}
f[k]=1;
total+=a[k];
for(int t=2;t<=n;t++)
{
if(!f[t]&&(d[k][t]<a[t]))
a[t]=d[k][t];
}
}
}
int main()
{
while(cin>>n)
{
if(n==0) break;
for(int i=1;i<=n;i++)
cin>>str[i];
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
d[i][j]=diff(str[i],str[j]);
d[j][i]=d[i][j];
}
}
for(int i=2;i<=n;i++)
{
f[i]=0;
a[i]=d[1][i];
}
path();
cout<<"The highest possible quality is 1/"<<total<<"."<<endl;
}
return 0;
}