#include<bits/stdc++.h>
using namespace std;
int n;
string z="0123456789ABCDEF";
struct stu
{
int num,sl;
}b[1005];
int c_i(char c)
{
if(c<='F'&&c>='A') return c-'A'+10;
return c-'0';
}
int f(char x,char y)
{
return c_i(x)*16+c_i(y)*1;
}
string e(int n)
{
string s="";
while(n!=0)
{
s+=z[n%16];
n/=16;
}
string h;
for(int i=s.size()-1;i>=0;i--) h+=s[i];
return h;
}
bool cmp(stu a,stu b)
{
if(a.sl>b.sl) return 1;
else if(a.sl==b.sl)
{
if(a.num>b.num) return 1;
else if(a.num<b.num) return 0;
}
else return 0;
}
string a[1005];
int main()
{
// cin>>n;
// cout<<e(n);
// char x,y;
// cin>>x>>y;
// cout<<f(x,y);
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
for(int j=0;j<a[i].size();j+=2)
{
b[f(a[i][j],a[i][j+1])].sl++;
// cout<<a[i][j]<<" "<<a[i][j+1]<<" "<<f(a[i][j],a[i][j+1])<<" "<<b[f(a[i][j],a[i][j+1])].sl<<endl;
b[f(a[i][j],a[i][j+1])].num=f(a[i][j],a[i][j+1]);
}
}
sort(b,b+255,cmp);
for(int i=0;i<16;i++)
{
cout<<e(b[i].num);
}
for(int i=0;i<n;i++)
{
for(int j=0;j<a[i].size();j++)
{
int tmp=f(a[i][j],a[i][j+1]);
int mina=INT_MAX,mins=0;
for(int k=0;k<16;k++)
{
if(b[k].num-tmp<mina)
{
mina=b[k].num-b[j].num;
mins=k;
}
}
string it=e(b[mins].num);
// cout<<b[mins].num<<endl;
a[i][j]=it[0];
a[i][j+1]=it[1];
// cout<<a[i][j]<<" "<<a[i][j+1]<<endl;
// cout<<it<<endl;
}
}
for(int i=0;i<n;i++)
{
cout<<a[i]<<endl;
}
return 0;
}