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.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.*;

public class C584C {

    public static void main(String[] args) throws Exception {
        new C584C().run();
    }

    void solve() throws Exception {
        int n = nextInt();
        int t = nextInt();
        String[] s = new String[2];
        for (int i = 0; i < 2; ++i) {
            s[i] = nextToken();
        }
        int diffLeft = 0;
        for (int i = 0; i < n; ++i) {
            if (s[0].charAt(i) != s[1].charAt(i)) {
                ++diffLeft;
            }
        }
        int[] diff = {t, t};
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < n; ++i) {
            boolean isEq = s[0].charAt(i) == s[1].charAt(i);
            if (isEq || diff[0] == diff[1]) {
                if (Math.max(diff[0], diff[1]) == n - i || (!isEq && diffLeft == 1)) {
                    char c = 'a';
                    while (s[0].charAt(i) == c || s[1].charAt(i) == c) {
                        ++c;
                    }
                    sb.append(c);
                    --diff[0];
                    --diff[1];
                } else {
                    sb.append(s[0].charAt(i));
                    if (!isEq) {
                        --diff[1];
                    }
                }
            } else if (diff[0] > diff[1]) {
                sb.append(s[1].charAt(i));
                --diff[0];
            } else {
                sb.append(s[0].charAt(i));
                --diff[1];
            }
            if (!isEq) {
                --diffLeft;
            }
        }
        if (diff[0] == diff[1] && diff[0] == 0) {
            out.print(sb);
        } else {
            out.print(-1);
        }
    }

    long[] nextLongArray(int n) throws IOException {
        long[] res = new long[n];
        for (int i = 0; i < n; ++i) {
            res[i] = nextLong();
        }
        return res;
    }

    long[][] nextLongArray(int nx, int ny) throws IOException {
        long[][] res = new long[nx][ny];
        for (int i = 0; i < nx; ++i) {
            for (int j = 0; j < ny; ++j) {
                res[i][j] = nextLong();
            }
        }
        return res;
    }

    long[][] newArray(int nx, int ny, long val) {
        long[][] res = new long[nx][ny];
        for (int i = 0; i < nx; ++i) {
            Arrays.fill(res[i], val);
        }
        return res;
    }

    long[][][] newArray(int nx, int ny, int nz, long val) {
        long[][][] res = new long[nx][ny][nz];
        for (int i = 0; i < nx; ++i) {
            for (int j = 0; j < ny; ++j) {
                Arrays.fill(res[i][j], val);
            }
        }
        return res;
    }

    String nextToken() throws IOException {
        while (st == null || !st.hasMoreTokens()) {
            st = new StringTokenizer(in.readLine());
        }
        return st.nextToken();
    }

    double nextDouble() throws IOException {
        return Double.parseDouble(nextToken());
    }

    int nextInt() throws IOException {
        return Integer.parseInt(nextToken());
    }

    long nextLong() throws IOException {
        return Long.parseLong(nextToken());
    }

    public void run() throws Exception {
        solve();
        out.close();
    }

    StringTokenizer st;
    final BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    final PrintWriter out = new PrintWriter(System.out);
}