搜索
#include <iostream>
#include <cstring>
using namespace std;
char tmp[10];
char data[110][10];
int vis[10];
int ans = 2<<10;
int n;
char hh[10];
int findchar(char* s,char k) {
for (int i=0;i<strlen(s);i++) {
if (k==s[i]) return i;
}
return -1;
}
void f(int len) { // start from 0
if(len==5) {
int k = 0;
for(int i=0;i<n;i++) {
for (int j=0;j<strlen(data[i])-1;j++) {
for (int h=j+1;h<strlen(data[i]);h++) {
int l1 = findchar(tmp,data[i][j]);
int l2 = findchar(tmp,data[i][h]);
if(l1-l2>=0) k++;
}
}
}
if(k<ans) {
ans=k;
strcpy(hh,tmp); }
}
else {
for (int i=0;i<5;i++) {
if(!vis[i]) {
vis[i]=1;
tmp[len] = 'A'+i;
f(len+1);
vis[i] = 0;
}
}
}
}
int main() {
while(cin>>n&&n) {
for (int i=0;i<n;i++) cin>>data[i];
memset(vis,0,sizeof(vis));
ans=2<<10;
f(0);
cout<<hh<<" is the median ranking with value "<<ans<< "."<<endl;
} }