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.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Iterator;


public class Main_Round324Div2_C {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		Printer pr = new Printer(System.out);

		int n = sc.nextInt();
		int t = sc.nextInt();
		char[] s1 = sc.next().toCharArray();
		char[] s2 = sc.next().toCharArray();
		int cnt = 0;
		for (int i = 0; i < n; i++) {
			if (s1[i] == s2[i]) {
				cnt++;
			}
		}

		if (n - t > cnt && (n - t - cnt) * 2 > n - cnt) {
			pr.println("-1");
		} else {
			StringBuilder ret = new StringBuilder();
			int cnt3 = Math.min(cnt, n - t);
			int cnt1 = Math.max(0, n - t - cnt);
			int cnt2 = cnt1;
			for (int i = 0; i < n; i++) {
				if (s1[i] == s2[i]) {
					if (cnt3 > 0) {
						ret.append(s1[i]);
						cnt3--;
					} else {
						ret.append((char)((s1[i] - 'a' + 1) % 26 + 'a'));
					}
				} else {
					if (cnt1 > 0) {
						ret.append(s1[i]);
						cnt1--;
					} else if (cnt2 > 0) {
						ret.append(s2[i]);
						cnt2--;
					} else {
						for (char c = 'a'; c <= 'z'; c++) {
							if (c != s1[i] && c != s2[i]) {
								ret.append(c);
								break;
							}
						}
					}
				}
			}
			pr.println(ret);
		}

		pr.close();
		sc.close();
	}

	@SuppressWarnings("unused")
	private static class Scanner {
		BufferedReader br;
		Iterator<String> it;
		
		Scanner (InputStream in) {
			br = new BufferedReader(new InputStreamReader(in));
		}
		
		String next() throws RuntimeException  {
			try {
				if (it == null || !it.hasNext()) {
					it = Arrays.asList(br.readLine().split(" ")).iterator();
				}
				return it.next();
			} catch (IOException e) {
				throw new IllegalStateException();
			}
		}
		
		int nextInt() throws RuntimeException {
			return Integer.parseInt(next());
		}

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

		float nextFloat() throws RuntimeException {
			return Float.parseFloat(next());
		}

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

		void close() {
			try {
				br.close();
			} catch (IOException e) {
//				throw new IllegalStateException();
			}
		}
	}

	private static class Printer extends PrintWriter {
		Printer(PrintStream out) {
			super(out);
		}
	}
}