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 JAVA):

Solution:
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class C {
    public static void main(String[] args) throws Exception {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String[] l = bf.readLine().split(" ");
        int n = Integer.parseInt(l[0]);
        int t = Integer.parseInt(l[1]);
        char[] s1 = bf.readLine().toCharArray();
        char[] s2 = bf.readLine().toCharArray();
        char[] s3 = new char[n];
        int diff = 0;
        boolean f = false;
        int last = -1;
        for (int i = 0; i < n; i++) {
            if (s1[i] != s2[i]) {
                s3[i] = f ? s1[i] : s2[i];
                diff++;
                last = i;
                f = !f;
            }
        }
        if (diff % 2 != 0) {
            s3[last] = somethingDiff(s1[last], s2[last]);
            diff++;
        }
        diff /= 2;
        if (diff > t) {
            System.out.println(-1);
            return;
        }
        int prev = -1;
        for (int i = 0; i < s3.length; i++) {
            if (diff == t)
                break;
            if (s1[i] != s2[i]) {
                if (prev != -1) {
                    s3[i] = somethingDiff(s1[i], s2[i]);
                    s3[prev] = somethingDiff(s1[prev], s2[prev]);
                    diff++;
                    prev = -1;
                } else {
                    prev = i;
                }

            }
        }
        boolean changed[] = new boolean[n];
        for (int i = 0; i < s3.length; i++) {
            if (diff == t)
                break;
            if (s1[i] == s2[i]) {
                s3[i] = somethingDiff(s1[i], s2[i]);
                changed[i] = true;
                diff++;
            }
        }
        if (diff < t) {
            System.out.println(-1);
            return;
        }
        for (int i = 0; i < s3.length; i++) {
            if (s1[i] == s2[i] && !changed[i]) {
                s3[i] = s1[i];
            }
        }
        System.out.println(String.valueOf(s3));
    }

    static char[] abc = "abcdefghijklmnopqrstuvwxyz".toCharArray();

    static char somethingDiff(char c, char d) {
        for (int i = 0; i < abc.length; i++) {
            if (abc[i] != c && abc[i] != d) {
                return abc[i];
            }
        }
        return (char) (((c + d) % 26 + 1) + 'a');
    }
}