#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:102400000,102400000")
using namespace std;
template <class T, class U>
inline void Max(T &a, U b) {
  if (a < b) a = b;
}
template <class T, class U>
inline void Min(T &a, U b) {
  if (a > b) a = b;
}
char s[100005], t[100005], sa[100005], sb[100005];
int main() {
  int T, i, j, k, m, n;
  scanf("%d%d%s%s", &n, &m, s, t);
  int a = 0, flag = 0;
  for (i = 0; i < n; i++)
    if (s[i] == t[i]) a++;
  int b = n - a;
  for (i = b & 1; i <= b; i += 2) {
    int second = (b + i) / 2;
    if (second > m) break;
    int first = m - second;
    if (first <= a) {
      flag = 1;
      int second = i, z = (b - i) / 2;
      for (j = 0; j < n; j++) {
        if (s[j] == t[j]) {
          if (first) {
            k = s[j] - 'a' - 1;
            if (k < 0) k = 25;
            sa[j] = k + 'a';
            first--;
          } else
            sa[j] = s[j];
        } else {
          if (second) {
            for (char c = 'a'; c <= 'z'; c++)
              if (c != s[j] && c != t[j]) {
                sa[j] = c;
                break;
              }
            second--;
          } else if (z) {
            sa[j] = s[j];
            z--;
          } else
            sa[j] = t[j];
        }
      }
      break;
    }
  }
  if (!flag)
    puts("-1");
  else
    sa[n] = 0, printf("%s\n", sa);
  return 0;
}
