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.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.io.ObjectInputStream.GetField;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TimeZone;
import java.util.TreeMap;
import java.text.*;

public class Main {
	static int same;

	public static boolean change(String up, String down, char[] result) {
		int mod = 0;
		char dir = 'u';
		for (int i = 0; i < result.length; i++) {

			if (result[i] >= 'a' && result[i] <= 'z')
				continue;
			if (mod == 2) {
				mod %= 2;
				same--;
			}
			if (same == 0)
				return true;

			if (dir == 'u')
				result[i] = up.charAt(i);
			else
				result[i] = down.charAt(i);

			mod++;

			dir = (dir == 'u') ? 'd' : 'u';

		}

		same = (mod == 2) ? same - 1 : same;

		return same == 0;

	}

	public static void main(String[] args) {
		FastReader in = new FastReader();
		PrintWriter out = new PrintWriter(System.out);
		int length = in.nextInt(), different = in.nextInt();
		same = length - different;
		String up = in.next();
		String down = in.next();
		char[] result = new char[length];

		for (int i = 0; i < length; i++)
			if (up.charAt(i) == down.charAt(i) && same != 0) {
				same--;
				result[i] = up.charAt(i);
			}

		if (same != 0 && !change(up, down, result))
			out.println("-1");
		else
			for (int i = 0; i < length; i++)
				if (!(result[i] >= 'a' && result[i] <= 'z'))
					out.print(getChar(up.charAt(i), down.charAt(i)));
				else
					out.print(result[i]);

		out.println();

		out.close();

	}

	public static char getChar(char up, char down) {
		for (int i = 97; i < 97 + 26; i++) {
			char ch = (char) i;
			if (ch != up && ch != down)
				return ch;
		}
		return down;
	}

}

class FastReader {
	BufferedReader br;
	StringTokenizer st;

	public FastReader() {
		br = new BufferedReader(new InputStreamReader(System.in));

	}

	public FastReader(File f) throws FileNotFoundException {
		br = new BufferedReader(new FileReader(f));
	}

	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());
	}

	double nextDouble() {

		return Double.parseDouble(next());
	}

	long nextLong() {

		return Long.parseLong(next());
	}

	String nextLine() {
		String str = "";
		try {
			str = br.readLine();

		} catch (IOException e) {

			e.printStackTrace();
		}
		return str;

	}
}