#include <bits/stdc++.h>
using namespace std;
int n, m;
int adj[60][60];
int labelx[60], usedx[60], lnk[60];
int labely[60], usedy[60];
int mat;
bool path(int i) {
  usedx[i] = 1;
  for (int j = 0; j < m; j++) {
    if (!usedy[j] && adj[i][j] != -0x3f3f3f3f &&
        !abs(adj[i][j] - labelx[i] - labely[j])) {
      usedy[j] = 1;
      if (lnk[j] == -1 || path(lnk[j])) {
        lnk[j] = i;
        return true;
      }
    }
  }
  return false;
}
int match() {
  mat = 0;
  memset(lnk, -1, sizeof(lnk));
  memset(labely, 0, sizeof(labely));
  for (int i = 0; i < n; i++) {
    labelx[i] = 0;
    for (int j = 0; j < m; j++) {
      if (adj[i][j] > labelx[i]) labelx[i] = adj[i][j];
    }
  }
  for (int k = 0; k < n; k++) {
    while (1) {
      memset(usedx, 0, sizeof(usedx));
      memset(usedy, 0, sizeof(usedy));
      if (path(k)) {
        mat++;
        break;
      }
      int del = 0x3f3f3f3f;
      for (int i = 0; i < n; i++)
        if (usedx[i])
          for (int j = 0; j < m; j++)
            if (!usedy[j] && adj[i][j] != -0x3f3f3f3f)
              del = min(del, labelx[i] + labely[j] - adj[i][j]);
      if (del == 0 || del == 0x3f3f3f3f) break;
      for (int i = 0; i < n; i++)
        if (usedx[i]) labelx[i] -= del;
      for (int j = 0; j < m; j++)
        if (usedy[j]) labely[j] += del;
    }
  }
  int sum = 0;
  for (int i = 0; i < n; i++) sum += labelx[i];
  for (int j = 0; j < m; j++) sum += labely[j];
  return sum;
}
char s1[2000005];
char s2[2000005];
int main(void) {
  int len, k;
  int a, b;
  int r;
  scanf(" %d %d", &len, &k);
  scanf(" %s", s1);
  scanf(" %s", s2);
  n = m = k;
  for (int i = 0; i < k; i++) {
    for (int j = 0; j < k; j++) {
      adj[i][j] = 0;
    }
  }
  for (int i = 0; i < len; i++) {
    if (islower(s1[i])) {
      a = s1[i] - 'a';
    } else {
      a = s1[i] - 'A' + 26;
    }
    if (islower(s2[i])) {
      b = s2[i] - 'a';
    } else {
      b = s2[i] - 'A' + 26;
    }
    if (adj[a][b] == -0x3f3f3f3f) {
      adj[a][b] = 1;
    } else {
      adj[a][b]++;
    }
  }
  r = match();
  printf("%d\n", r);
  for (int i = 0; i < k; i++) {
    for (int j = 0; j < k; j++) {
      if (lnk[j] == i) {
        if (j >= 26) {
          printf("%c", j + 'A' - 26);
        } else {
          printf("%c", j + 'a');
        }
      }
    }
  }
  printf("\n");
  return 0;
}
