#include <bits/stdc++.h>
using namespace std;
int n, k;
string a, b;
int w[55][55];
int u[55], v[55], p[55], way[55], minv[55];
bool used[55];
int ans[55];
int toInt(char ch) {
  if (ch >= 'a' && ch <= 'z') return ch - 'a' + 1;
  return ch - 'A' + 27;
}
char toChar(int i) {
  if (i > 26) return i - 27 + 'A';
  return i - 1 + 'a';
}
void solve() {
  for (int i = 1; i <= k; i++) {
    p[0] = i;
    int j0 = 0;
    for (int j = 0; j <= k; j++) {
      minv[j] = 1000000000;
      used[j] = 0;
    }
    do {
      used[j0] = 1;
      int i0 = p[j0], delta = 1000000000, j1;
      for (int j = 1; j <= k; j++) {
        if (!used[j]) {
          int cur = w[i0][j] - u[i0] - v[j];
          if (cur < minv[j]) {
            minv[j] = cur;
            way[j] = j0;
          }
          if (minv[j] < delta) {
            delta = minv[j];
            j1 = j;
          }
        }
      }
      for (int j = 0; j <= k; j++) {
        if (used[j]) {
          u[p[j]] += delta;
          v[j] -= delta;
        } else
          minv[j] -= delta;
      }
      j0 = j1;
    } while (p[j0]);
    do {
      int j1 = way[j0];
      p[j0] = p[j1];
      j0 = j1;
    } while (j0);
  }
  for (int j = 1; j <= k; j++) ans[p[j]] = j;
}
int main() {
  ios::sync_with_stdio(0);
  cin >> n >> k >> a >> b;
  for (int i = 0; i < n; i++) {
    w[toInt(a[i])][toInt(b[i])]--;
  }
  solve();
  cout << v[0] << '\n';
  for (int i = 1; i <= k; i++) cout << toChar(ans[i]);
  cout << '\n';
}
