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

public class Vasya {
	
	public static void main(String[] args) throws java.lang.Exception {
		InputStream inputStream = System.in;
		OutputStream outputStream = System.out;
		InputReader in = new InputReader(inputStream);
		PrintWriter out = new PrintWriter(outputStream);
		TaskA solver = new TaskA();
		solver.solve(in, out);
		out.close();
	}
}

class TaskA {
	
	public void solve(InputReader in, PrintWriter out) {
		int n = in.nextInt(), k = in.nextInt();
		String s1 = in.next(), s2 = in.next();
		ArrayList<Integer> vc = new ArrayList<Integer>();
		ArrayList<Integer> vc2 = new ArrayList<Integer>();
		char[] buf = new char[n];
		
		for (int i=0; i<n; ++i) {
			if (s1.charAt(i) != s2.charAt(i)) {
				vc.add(i);
			} else {
				vc2.add(i);
			}
			for (char ch='a'; ch<='z'; ++ch) {
				if (ch!=s1.charAt(i) && ch!=s2.charAt(i)) {
					buf[i] = ch;
					break;
				}
			}
		}
		
		int dif = vc.size(), same = vc2.size();
		int mn = (dif + 1) / 2;
		if (k < mn) {
			out.println("-1");
			return ;
		}
		
		int delta = n - k;
		
		{// use same character
			int i = 0;
			
			while (delta>0 && i<same) {
				int pos = vc2.get(i);
				buf[pos] = s1.charAt(pos);
				++i;
				--delta;
			}
		}
		
		{// use different character
			int i = 0;
			
			while (delta>0 && i+1<dif) {
				int p1 = vc.get(i);
				int p2 = vc.get(i+1);
				buf[p1] = s1.charAt(p1);
				buf[p2] = s2.charAt(p2);
				i += 2;
				--delta;
			}
		}
		
		if (delta != 0) {
			out.println("-1");
			return ;
		}
		
		out.println(new String(buf));
	}
}

class InputReader {
	public BufferedReader reader;
	public StringTokenizer tokenizer;
	
	public InputReader(InputStream stream) {
		reader = new BufferedReader(new InputStreamReader(stream), 32768);
		tokenizer = null;
	}
	
	public String next() {
		while (tokenizer==null || !tokenizer.hasMoreTokens()) {
			try {
				tokenizer = new StringTokenizer(reader.readLine());
			} catch (IOException e) {
				throw new RuntimeException(e);
			}
		}
		return tokenizer.nextToken();
	}
	
	public int nextInt() {
		return Integer.parseInt(next());
	}
	
	public long nextLong() {
		return Long.parseLong(next());
	}
	
	public double nextDouble() {
		return Double.parseDouble(next());
	}
}