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.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.BitSet;

public class Main {
	public static void main(String[] args) throws NumberFormatException,
	IOException {
		Solve solve = new Solve();
		solve.solve();
	}
}
class Solve{
	void solve() throws NumberFormatException, IOException{
		ContestScanner in = new ContestScanner();
		Writer out = new Writer();
		int n = in.nextInt();
		int t = in.nextInt();
		char[] s1 = in.nextToken().toCharArray();
		char[] s2 = in.nextToken().toCharArray();
		BitSet sm = new BitSet(n);
		int same = 0;
		for(int i=0; i<n; i++){
			if(s1[i] == s2[i]){
				same++;
				sm.set(i);
			}
		}
		if(t < (n-same+1)/2){
			System.out.println(-1);
			return;
		}
		int need = n - t;
		char[] s3 = new char[n];
		int one = need - same;
		if(one>0) need -= one;
		int s1one = one;
		for(int i=sm.nextClearBit(0); i<n; i=sm.nextClearBit(i+1)){
			if(s1one-->0){
				s3[i] = s1[i];
			}else{
				if(one-->0) s3[i] = s2[i];
			}
			if(one<=0) break;
		}
		for(int i=sm.nextSetBit(0); i!=-1; i=sm.nextSetBit(i+1)){
			if(need--<=0) break;
			s3[i] = s1[i];
		}
		for(int i=0; i<n; i++){
			if(s3[i] == 0){
				for(char c='a'; c<='z'; c++){
					if(c != s1[i] && c != s2[i]){
						s3[i] = c;
						break;
					}
				}
			}
		}
		System.out.println(String.valueOf(s3));
	}
}

class Timer{
	long time;
	public void set(){time = System.currentTimeMillis();}
	public long stop(){return System.currentTimeMillis()-time;}
}
class Writer extends PrintWriter{
	public Writer(String filename) throws IOException
	{super(new BufferedWriter(new FileWriter(filename)));}
	public Writer() throws IOException{super(System.out);}
}
class ContestScanner {
	private BufferedReader reader;
	private String[] line;
	private int idx;
	public ContestScanner() throws FileNotFoundException 
	{reader = new BufferedReader(new InputStreamReader(System.in));}
	public ContestScanner(String filename) throws FileNotFoundException
	{reader = new BufferedReader(new InputStreamReader(new FileInputStream(filename)));}
	public String nextToken() throws IOException {
		if (line == null || line.length <= idx) {
			line = reader.readLine().trim().split(" ");
			idx = 0;
		}
		return line[idx++];
	}
	public String readLine() throws IOException{return reader.readLine();}
	public long nextLong() throws IOException, NumberFormatException
	{return Long.parseLong(nextToken());}
	public int nextInt() throws NumberFormatException, IOException
	{return (int) nextLong();}
	public double nextDouble() throws NumberFormatException, IOException 
	{return Double.parseDouble(nextToken());}
}