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;
char inp1[100005];
char inp2[100005];
char res[100005];
bool mk[100005];
bool mk1[100005];
char getDiff(char a, char b, char c) {
  for (int i = 0; i < 26; i++)
    if (a != ('a' + i) && b != ('a' + i) && c != ('a' + i)) return ('a' + i);
  return -1;
}
int main() {
  int n, t, s = 0;
  cin >> n >> t;
  cin >> inp1 >> inp2;
  memset(mk, 0, sizeof mk);
  memset(mk1, 0, sizeof mk1);
  for (int i = 0; i < n; i++)
    if (inp1[i] != inp2[i]) s++;
  res[n] = '\0';
  if (s > 2 * t) {
    cout << -1 << endl;
    return 0;
  }
  if (s <= 2 * t && s >= t) {
    int c = 0;
    for (int i = 0; i < n; i++)
      if (inp1[i] != inp2[i] && c < t) mk[i] = true, c++;
    c = 0;
    for (int i = n - 1; i >= 0; i--)
      if (inp1[i] != inp2[i] && c < t) mk1[i] = true, c++;
    for (int i = 0; i < n; i++) {
      if (mk[i] == true && mk1[i] == true)
        res[i] = getDiff(inp1[i], inp2[i], 0);
      else if (mk[i])
        res[i] = inp2[i];
      else if (mk1[i])
        res[i] = inp1[i];
      else
        res[i] = inp1[i];
    }
    cout << res << endl;
    return 0;
  }
  if (s < t) {
    int c = 0;
    for (int i = 0; i < n; i++) {
      if (inp1[i] != inp2[i]) res[i] = getDiff(inp1[i], inp2[i], 0), c++;
    }
    for (int i = 0; i < n; i++) {
      if (inp1[i] == inp2[i] && c < t)
        res[i] = getDiff(inp1[i], inp2[i], 0), c++;
      else if (inp1[i] == inp2[i])
        res[i] = inp1[i];
    }
    cout << res << endl;
  }
  return 0;
}