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

public class Main {
	static Scanner sc = new Scanner(System.in);
	static PrintWriter out = new PrintWriter(System.out);
	static int n,t;
	static char[] a,b;
	
	public static void main(String[] args) throws Exception {
		n = sc.nextInt();
		t = sc.nextInt();
		a = sc.nextLine().toCharArray();
		b = sc.nextLine().toCharArray();
		int diff = 0, same = 0;
		for(int i=0; i<n; i++) {
			if(a[i] != b[i]) diff++;
			else same++;
		}
		StringBuilder sb = new StringBuilder();
		int ca = diff - t, cb = ca,cur = 0;
		
		char res[] = new char[n];
		for(int i = 0; i<n; i++) {
			if(a[i] != b[i]) {
				if(ca > 0) {
					ca--;
					res[i] = a[i];
				}else if(cb > 0) {
					cb--;
					res[i] = b[i];
				}else {
					char c = 'a';
					while(c == a[i] || c == b[i]) c++;
					res[i] = c;
				}
			}
		}
		int ta = 0,tb = 0;
		for(int i=0; i<n; i++) {
			if(a[i] != res[i] && res[i] != 0) ta++;
		}
		for(int i=0; i<n; i++) {
			if(res[i] == 0) {
				if(ta < t) {
					ta++;
					char c = 'a';
					while(c == a[i]) c++;
					res[i] =c;
				}else {
					res[i] = a[i];
				}
			}
		}
		ta = 0;
		String ans = String.copyValueOf(res);
		for(int i=0; i<ans.length(); i++) {
			if(ans.charAt(i) != a[i]) ta++;
			if(ans.charAt(i) != b[i]) tb++;
		}
		if(ta == tb && ta == t) {
			out.println(ans);
		}else {
			out.println(-1);
		}
		out.close();
	}
	
}

class Scanner {
	StringTokenizer st;
	BufferedReader br;

	public Scanner(InputStream system) {
		br = new BufferedReader(new InputStreamReader(system));
	}

	public Scanner(String file) throws Exception {
		br = new BufferedReader(new FileReader(file));
	}

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

	public String nextLine() throws IOException {
		return br.readLine();
	}

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

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

	public Long nextLong() throws IOException {
		return Long.parseLong(next());
	}
}