#include <iostream.h>
#include <fstream.h>

long int a[26], b[26], n, tot = 0;
char tast[8][4];
int clicks[26];


void init()
{
	for (int i = 0; i <= 25; i++) 
	{
		a[i] = 0;
		clicks[i] = 0;
	}

	for (i = 0; i <= 7; i++)
	{
		for (int j = 0; j <= 3; j++) tast[i][j] = 0;
	}

}
void save()
{
	ofstream gout("zad4.res");

	gout << tot << endl;

	for (int i = 0; i <= 7; i++)
	{
		for (int j = 0; j <= 3; j++)
			if (tast[i][j] != 0) gout << tast[i][j];

		gout << endl;
	}
}
void load()
{
	ifstream gin("zad4.dat");
	char inBuf[25];

	gin >> n;
	gin.getline(inBuf, 25);

	for (long int i = 1; i <= n; i++)
	{
		gin.getline(inBuf, 25);

		for (long int j = 0; inBuf[j] != 0; j++) a[inBuf[j] - 97]++;
	}
}

void solve()
{
	long int m;
	int spot, i, j, k;

	for (i = 0; i <= 25; i++) b[i] = a[i];

	for (i = 0; i <= 2; i++)
	{
		for (j = 0; j <= 7; j++)
		{
			m = -1;
			spot = 0;
			for (k = 0; k <= 25; k++)
			{
				if (a[k] > m)
				{
					m = a[k];
					spot = k;
				}
			}

			tast[j][i] = spot + 97;
			a[spot] = -1;
			clicks[spot] = i + 1;
		}
	}

	for (i = 0; a[i] == -1; i++); tast[5][3] = i + 97; clicks[i] = 4; a[i] = -1;
	for (; a[i] == -1; i++); tast[7][3] = i + 97; clicks[i] = 4;

	tot = 0;
	for (i = 0; i <= 25; i++) tot += clicks[i] * b[i];

	tot += n - 1;

}



int main()
{
	load();
//	qsort(0, 25);
	solve();
	save();
	return 0;
}