#include char truck[2010][8]; int truckDiff[2010]; int vyskyt[30]; void Clear() { for(int i = 0; i < 30; i++) vyskyt[i] = 0; } void ClearTruck() { for(int i = 0; i < 2010; i++) truckDiff[i] = 0; } int main() { int n = 0; scanf("%d", &n); while(n != 0) { for(int i = 0; i < n; i++) scanf("%s\n", truck[i]); ClearTruck(); for(int i = 0; i < 7; i++) { Clear(); for(int j = 0; j < n; j++) { vyskyt[truck[j][i] - 'a']++; } // for(int j = 0; j < 2; j++) // printf("%d ", vyskyt[j]); // printf("\n"); /* int maxIndex = 0; int max = 0; char maxLetter = 'a'; for(int k = 0; k < 30; k++) { if (vyskyt[k] > max) { maxLetter = k + 'a'; maxIndex = k; max = vyskyt[k]; } } int diff = 0; */ int diff = 0; for(int k = 0; k < n; k++) { diff = 0; for(int l = 0; l < 30; l++) { if (truck[k][i]-'a' == l) continue; diff += vyskyt[l]; } // printf("Diff: %d\n", diff); truckDiff[k] += diff; } } int min = 10000000, minIndex; for(int i = 0; i < n; i++) { if (truckDiff[i] < min) { min = truckDiff[i]; minIndex = i; } } // printf("T %d\n", minIndex); /* int count = 0; for(int i = 0; i < n; i++) { if (minIndex == i) continue; for(int j = 0; j < 7; j++) if (truck[minIndex][j] != truck[i][j]) count++; }*/ printf("The highest possible quality is 1/%d.\n", truckDiff[minIndex]); scanf("%d", &n); } return 0; }