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;
const int MOD = 1e9 + 7;
const int SIZE = 1e5 + 10;
inline int in(int d = 0, char q = 0, int c = 1) {
  while (q != '-' && q != EOF && (q < 48 || q > 57)) q = getchar();
  if (q == EOF) return EOF;
  if (q == '-') c = -1, q = getchar();
  do d = d * 10 + (q ^ 48), q = getchar();
  while (q < 58 && q > 47);
  return c * d;
}
int f(string s1, string s2) {
  int r = 0;
  for (int i = 0; i < ((int)(s1).size()); i++) {
    if (s1[i] != s2[i]) r++;
  }
  return r;
}
int main() {
  string s1, s2, s3;
  bool c1[100000] = {}, c2[100000] = {};
  int n = in(), t = in();
  cin >> s1 >> s2;
  for (int i = 0, j = 0, k1 = 0, k2 = 0, num; i < t; i++) {
    if (j < n) {
      if (j == n - 1) {
        c1[j] = c2[j] = true;
        j++;
      } else {
        while (j + 1 < n && s1[j] == s2[j]) j++;
        if (j == n - 1) {
          c1[j] = c2[j] = true;
          j++;
        } else {
          c1[j] = true;
          j++;
          while (j < n && s1[j] == s2[j]) j++;
          if (j == n) {
            j = 0;
            while (j < n) {
              if (c1[j] == true && c2[j] == false ||
                  c1[j] == false && c2[j] == true) {
                c1[j] = c2[j] = true;
                break;
              }
              j++;
            }
            j = n;
          } else {
            c2[j] = true;
            j++;
          }
        }
      }
    } else {
      num = 0;
      while (k2 < n && (c1[k2] == true || c2[k2] == true)) k2++;
      if (k2 < n) {
        c1[k2] = c2[k2] = true;
        num += 2;
        k2++;
      }
      if (num == 0) {
        num = 0;
        while (k1 < n) {
          while (k1 < n && c1[k1] == false && c2[k1] == false) k1++;
          if (c1[k1] == false) {
            c1[k1] = true;
            num++;
            if (num == 2) {
              k1++;
              break;
            }
          }
          if (c2[k1] == false) {
            c2[k1] = true;
            num++;
            if (num == 2) {
              k1++;
              break;
            }
          }
          k1++;
        }
      }
    }
  }
  s3 = string(s1.size(), 'a');
  for (int i = 0; i < s1.size(); i++) {
    if (c1[i] == true && c2[i] == true) {
      if ('a' != s1[i] && 'a' != s2[i]) {
        s3[i] = 'a';
      } else if ('b' != s1[i] && 'b' != s2[i]) {
        s3[i] = 'b';
      } else if ('c' != s1[i] && 'c' != s2[i]) {
        s3[i] = 'c';
      }
    } else if (c1[i] == false && c2[i] == false) {
      s3[i] = s1[i];
    } else if (c1[i] == false) {
      s3[i] = s1[i];
    } else if (c2[i] == false) {
      s3[i] = s2[i];
    }
  }
  if (f(s1, s3) == t && f(s2, s3) == t)
    ;
  else {
    s3 = "-1";
  }
  cout << s3 << endl;
  return 0;
}