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.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.InputStream;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 *
 * @author awh
 */
public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        MyScanner in = new MyScanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        TaskC solver = new TaskC();
        solver.solve(1, in, out);
        out.close();
    }

    static class TaskC {
        public void solve(int testNumber, MyScanner in, PrintWriter out) {
            int n = in.nextInt();
            int t = in.nextInt();
            String s1 = in.next();
            String s2 = in.next();
            char[] ca1 = s1.toCharArray();
            char[] ca2 = s2.toCharArray();
            boolean[] same = new boolean[n];
            int diffCount = 0;
            for (int i = 0; i < n; i++) {
                if (ca1[i] == ca2[i]) {
                    same[i] = true;
                } else {
                    same[i] = false;
                    diffCount++;
                }
            }
            int low = diffCount % 2 == 1 ? (diffCount / 2 + 1) : (diffCount / 2);
            int high = diffCount;
            if (low <= t && high + (n - diffCount) >= t) {
                int target = Math.min(t, high);
                int x = target + target - diffCount;
                char[] ans = new char[n];
                int both = 0;
                boolean takeFromOne = true;
                for (int i = 0; i < n; i++) {
                    if (same[i] == false) {
                        if (both < x) {
                            for (int j = 0; j < 26; j++) {
                                char c = (char) ('a' + j);
                                if (c != ca1[i] && c != ca2[i]) {
                                    ans[i] = c;
                                    break;
                                }
                            }
                            both++;
                        } else {
                            if (takeFromOne) {
                                ans[i] = ca1[i];
                            } else {
                                ans[i] = ca2[i];
                            }
                            takeFromOne = !takeFromOne;
                        }
                    }
                }
                int left = t - target;
                int count = 0;
                for (int i = 0; i < n; i++) {
                    if (same[i] == true) {
                        if (count < left) {
                            for (int j = 0; j < 26; j++) {
                                char c = (char) ('a' + j);
                                if (c != ca1[i] && c != ca2[i]) {
                                    ans[i] = c;
                                    break;
                                }
                            }
                            count++;
                        } else {
                            ans[i] = ca1[i];
                        }
                    }
                }
                out.println(String.valueOf(ans));
            } else {
                out.println(-1);
            }
        }

    }

    static class MyScanner {
        BufferedReader br;
        StringTokenizer st;

        public MyScanner(InputStream in) {
            br = new BufferedReader(new InputStreamReader(in));
        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

    }
}