#include <bits/stdc++.h>
using namespace std;
char s1[2000005], s2[2000005];
int d[60][60];
int trai[60], phai[60], fx[60], fy[60], q[60], trc[60];
bool dtrai[60], dphai[60];
int pos(char c) {
  if (c >= 'a' && c <= 'z') return c - 'a';
  return c - 'A' + 26;
}
void tangduong(int st, int j) {
  int i, j2;
  do {
    i = trc[j];
    j2 = phai[i];
    trai[j] = i;
    phai[i] = j;
    j = j2;
  } while (i != st);
}
bool timduong(int st, int n) {
  int i, dau, cuoi, x;
  for ((i) = 0; (i) < (n); (i)++) dtrai[i] = dphai[i] = false;
  dau = -1, cuoi = 0;
  q[0] = st, dtrai[st] = true;
  while (dau < cuoi) {
    x = q[++dau];
    for ((i) = 0; (i) < (n); (i)++)
      if (fx[x] + fy[i] == d[x][i] && !dphai[i]) {
        dphai[i] = true;
        trc[i] = x;
        if (trai[i] == -1) {
          tangduong(st, i);
          return true;
        } else {
          q[++cuoi] = trai[i];
          dtrai[trai[i]] = true;
        }
      }
  }
  return false;
}
void suanhan(int n) {
  int i, j, xmin = 1001001001;
  for ((i) = 0; (i) < (n); (i)++)
    if (dtrai[i])
      for ((j) = 0; (j) < (n); (j)++)
        if (!dphai[j])
          if (xmin > fx[i] + fy[j] - d[i][j]) xmin = fx[i] + fy[j] - d[i][j];
  for ((i) = 0; (i) < (n); (i)++)
    if (dtrai[i]) fx[i] -= xmin;
  for ((i) = 0; (i) < (n); (i)++)
    if (dphai[i]) fy[i] += xmin;
}
void hungarian(int n) {
  int i, j, xmax, res;
  for ((i) = 0; (i) < (n); (i)++) {
    trai[i] = phai[i] = -1;
    fy[i] = 0;
  }
  for ((i) = 0; (i) < (n); (i)++) {
    xmax = 0;
    for ((j) = 0; (j) < (n); (j)++)
      if (d[i][j] > xmax) xmax = d[i][j];
    fx[i] = xmax;
  }
  for ((i) = 0; (i) < (n); (i)++)
    while (!timduong(i, n)) suanhan(n);
  res = 0;
  for ((i) = 0; (i) < (n); (i)++) res += d[i][phai[i]];
  printf("%d\n", res);
  for ((i) = 0; (i) < (n); (i)++)
    printf("%c",
           "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[phai[i]]);
  printf("\n");
}
void input() {
  int n, nk, i;
  scanf("%d %d", &n, &nk);
  scanf("%s %s", &s1, &s2);
  for ((i) = 0; (i) < (n); (i)++) d[pos(s1[i])][pos(s2[i])]++;
  hungarian(nk);
}
int main() {
  input();
  return 0;
}
