#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; for(int k = 0; k < 30; k++) { if (k == maxIndex) continue; if (vyskyt[k] != 0) diff += vyskyt[k]; } for(int k = 0; k < n; k++) if (truck[k][i] == maxLetter) truckDiff[k] += diff; } int min = 0, 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", count); scanf("%d", &n); } return 0; }