Problem: Marina loves strings of the same length and Vasya loves when there is a third string, different from them in exactly t characters. Help Vasya find at least one such string.

More formally, you are given two strings s1, s2 of length n and number t. Let's denote as f(a, b) the number of characters in which strings a and b are different. Then your task will be to find any string s3 of length n, such that f(s1, s3) = f(s2, s3) = t. If there is no such string, print  - 1.

Input

The first line contains two integers n and t (1 ≤ n ≤ 105, 0 ≤ t ≤ n).

The second line contains string s1 of length n, consisting of lowercase English letters.

The third line contain string s2 of length n, consisting of lowercase English letters.

Output

Print a string of length n, differing from string s1 and from s2 in exactly t characters. Your string should consist only from lowercase English letters. If such string doesn't exist, print -1.

Examples

Input

3 2
abc
xyc


Output

ayd

Input

1 0
c
b


Output

-1

Solution (in CPP):

Solution:
#include <bits/stdc++.h>
using namespace std;
int init() {
  ios_base::sync_with_stdio(0);
  return 0;
}
int initializer = init();
bool will_it_be_AC() { return true; }
bool prime(long long n) {
  for (long long i = 2; i * i <= n; i++)
    if (n % i == 0) return false;
  return true;
}
vector<long long> divs(long long n) {
  vector<long long> v;
  long long i = 2;
  while (i * i <= n)
    if (n % i == 0) {
      n /= i;
      v.push_back(i);
    } else
      i++;
  v.push_back(n);
  return v;
}
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
long long extgcd(long long a, long long b, long long &x, long long &y) {
  if (a == 0) {
    x = 0;
    y = 1;
    return b;
  }
  long long x1, y1, d = extgcd(b % a, a, x1, y1);
  x = y1 - (b / a) * x1;
  y = x1;
  return d;
}
template <typename T>
void ivector(vector<T> &v, int size) {
  for (int i = 0; i < size; i++) cin >> v[i];
}
template <typename T>
void ovector(vector<T> v, int size, string separator) {
  if (size != 0) cout << v[0];
  for (int i = 1; i < size; i++) cout << separator << v[i];
}
int getint() {
  int r;
  cin >> r;
  return r;
}
template <typename T>
class fenwick {
 private:
  vector<T> t;
  int n;

 public:
  fenwick(int nn) { init(nn); }
  void init(int nn) {
    n = nn;
    t.assign(n, 0);
  }
  T sum(int r) {
    T result = 0;
    for (; r >= 0; r = (r & (r + 1)) - 1) result += t[r];
    return result;
  }
  void inc(int i, T delta) {
    for (; i < n; i = (i | (i + 1))) t[i] += delta;
  }
  T sum(int l, int r) { return sum(r) - sum(l - 1); }
  T get(int i) { return sum(i, i); }
  void put(int i, T v) { inc(i, v - sum(i, i)); }
  int size() { return n; }
};
int main() {
  int n = getint(), t = getint(), d = n - t;
  string s1 = "", s2 = "";
  getline(cin, s1);
  getline(cin, s1);
  getline(cin, s2);
  string s3 = "", s4 = "";
  int c = 0;
  for (int i = 0; i < n; i++) {
    char q = 'z';
    while (s1[i] == q || s2[i] == q) q--;
    s3 += q;
    if (s1[i] == s2[i]) c++;
  }
  int q, q1;
  if (d <= c) {
    q1 = 0;
    q = d;
  } else {
    q = c;
    q1 = d - c;
  }
  int q2 = q1;
  if (q1 * 2 > n - c) {
    cout << -1;
    return 0;
  }
  for (int i = 0; i < n; i++) {
    if (s1[i] == s2[i]) {
      if (q == 0) {
        s4 += s3[i];
        continue;
      }
      q--;
      s4 += s1[i];
    } else {
      if (q1 != 0) {
        q1--;
        s4 += s1[i];
        continue;
      }
      if (q2 != 0) {
        q2--;
        s4 += s2[i];
        continue;
      }
      s4 += s3[i];
    }
  }
  cout << s4;
  return 0;
}