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

public class C {
	FastScanner in;
	PrintWriter out;

	char other(char a, char b) {
		if (a != 'a' && b != 'a') {
			return 'a';
		}
		if (a != 'b' && b != 'b') {
			return 'b';
		}
		return 'c';
	}

	public void solve() throws IOException {
		int n = in.nextInt(), k = in.nextInt();
		char[] c = in.next().toCharArray();
		char[] t = in.next().toCharArray();
		char[] res = new char[n];
		int cntDif = 0;
		for (int i = 0; i < n; i++) {
			if (c[i] != t[i]) {
				cntDif++;
			}
		}
		for (int half = 0; half <= cntDif; half += 2) {
			if (half / 2 <= k && (half / 2 + n - half) >= k && k - half / 2 >= (cntDif - half)) {
				int ca = half / 2, ta = half / 2;
				int dif = k - half / 2;
				for (int i = 0; i < n; i++) {
					if (c[i] != t[i]) {
						if (ca > 0 || ta > 0) {
							if (ca > ta) {
								res[i] = t[i];
								ca--;
							} else {
								res[i] = c[i];
								ta--;
							}
						} else if (dif > 0) {
							dif--;
							res[i] = other(c[i], t[i]);
						}
					}
				}
				for (int i = 0; i < n; i++) {
					if (c[i] == t[i]) {
						if (dif > 0) {
							dif--;
							res[i] = other(c[i], t[i]);
						} else {
							res[i] = c[i];
						}
					}
				}
				out.println(new String(res));
				return;
			}
		}
		out.println(-1);
	}

	public void run() {
		try {
			in = new FastScanner();
			out = new PrintWriter(System.out);

			solve();

			out.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	class FastScanner {
		BufferedReader br;
		StringTokenizer st;

		FastScanner() {
			br = new BufferedReader(new InputStreamReader(System.in));
		}

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

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

		long nextLong() {
			return Long.parseLong(next());
		}

		double nextDouble() {
			return Double.parseDouble(next());
		}
	}

	public static void main(String[] arg) {
		new C().run();
	}
}