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;
void cout_v(vector<long long>& a) {
  long long n = a.size();
  for (long long i = 0; i < n; i++) {
    cout << a[i] << " ";
    if (i != n - 1) {
      continue;
    } else
      cout << endl;
  }
}
void cin_v(vector<int>& a) {
  long long n = a.size();
  for (long long i = 0; i < n; i++) {
    cin >> a[i];
  }
}
long long pow_mod(long long a, long long b, long long m) {
  long long res = 1;
  while (b > 0) {
    if (b % 2 == 1) res = (res * a) % m;
    b = b / 2;
    a = (a * a) % m;
  }
  return res;
}
int main() {
  long long n, t;
  cin >> n >> t;
  string a, b;
  cin >> a >> b;
  vector<long long> diff;
  vector<long long> same;
  for (long long i = 0; i < n; i++) {
    if (a[i] == b[i]) {
      same.push_back(i);
    } else {
      diff.push_back(i);
    }
  }
  vector<char> res(n, '0');
  long long dif = t;
  long long i = 0;
  for (i = 0; i < diff.size(); i++) {
    if (i + 1 >= diff.size()) break;
    res[diff[i]] = a[diff[i]];
    i++;
    if (i >= diff.size()) break;
    res[diff[i]] = b[diff[i]];
    dif--;
    if (dif == 0) {
      i++;
      break;
    }
  }
  for (i; i < diff.size(); i++) {
    res[diff[i]] = (a[diff[i]] - 'a' + 1) % 26 + 'a';
    if (res[diff[i]] == b[diff[i]]) {
      res[diff[i]] = (b[diff[i]] - 'a' + 1) % 26 + 'a';
    }
    dif--;
  }
  i = 0;
  while (i < same.size()) {
    if (dif != 0) {
      res[same[i]] = (a[same[i]] - 'a' + 1) % 26 + 'a';
      dif--;
    } else {
      res[same[i]] = a[same[i]];
    }
    i++;
  }
  if (dif != 0) {
    for (i = 0; i < diff.size(); i++) {
      if (i + 1 >= diff.size()) break;
      if ((res[diff[i]] == a[diff[i]] && res[diff[i + 1]] == b[diff[i + 1]]) ||
          (res[diff[i]] == b[diff[i]] && res[diff[i + 1]] == a[diff[i + 1]])) {
        res[diff[i]] = (a[diff[i]] - 'a' + 1) % 26 + 'a';
        if (res[diff[i]] == b[diff[i]]) {
          res[diff[i]] = (b[diff[i]] - 'a' + 1) % 26 + 'a';
        }
        i++;
        if (i >= diff.size()) break;
        res[diff[i]] = (a[diff[i]] - 'a' + 1) % 26 + 'a';
        if (res[diff[i]] == b[diff[i]]) {
          res[diff[i]] = (b[diff[i]] - 'a' + 1) % 26 + 'a';
        }
        dif--;
        if (dif == 0) {
          i++;
          break;
        }
      }
    }
  }
  long long v1 = 0, v2 = 0;
  for (long long i = 0; i < n; i++) {
    if (res[i] != a[i]) v1++;
    if (res[i] != b[i]) v2++;
  }
  if (v1 != t || v2 != t) {
    cout << "-1\n";
    return 0;
  }
  for (long long i = 0; i < n; i++) {
    cout << res[i];
  }
  cout << endl;
  return 0;
}