#include <bits/stdc++.h>
#define ll long long
using namespace std;
int n,m,a[25][25],b[25][25],vis[256],p[256];
int c(string str) {
int num = 0;
for(int i = 0;i < 2;i++) {
if(str[i] <= '9' && str[i] >= '0') num += (str[i] - '0')*pow(16,i^1);
else num += (str[i] - 'A' + 10)*pow(16,i^1);
}
return num;
}
void init() {
for(int i = 0;i <= 255;i++) p[i] = i;
}
bool cmp(int x,int y) {
return vis[x] > vis[y] || (vis[x] == vis[y] && x < y);
}
int judge(int x) {
int md = 300,id;
for(int i = 0;i < 16;i++) {
if(abs(x - p[i]) < md) {
md = abs(x - p[i]), id = i;
}else if(abs(x - p[i]) == md) {
if(p[id] > p[i]) id = i;
}
}
return id;
}
int main( ) {
init();
cin >> n;
string s;
for(int i = 1;i <= n;i++) {
cin >> s;
m = s.size();
string tmp;
for(int j = 0;j < m;j += 2) {
tmp = s.substr(j,2);
a[i][j/2+1] = c(tmp);
vis[a[i][j/2+1]]++;
}
}
sort(p,p+256,cmp);
for(int i = 0;i < 16;i++) printf("%02X",p[i]);
printf("\n");
for(int i = 1;i <= n;i++) {
for(int j = 1;j <= m/2;j++) {
b[i][j] = judge(a[i][j]);
printf("%X",b[i][j]);
}
printf("\n");
}
return 0;
}