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.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {

	static char getC(char a,char b)
	{
		for (int i = 0; i < 'z'-'a'; i++) 
		{
			char c = (char) (i+'a');
			if(a!=c&&b!=c)return c;
		}
		return 'z';
	}
	
	public static void main(String[] args) throws IOException {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt() , t = sc.nextInt();
		char[] a = sc.nextLine().toCharArray(),b = sc.nextLine().toCharArray();
		char[] res = new char[n];
		Arrays.fill(res, '?');
		int same1 = n-t,same2 = same1;
		for (int i = 0;same1>0 && i < n; i++) 
		{
			if(a[i]==b[i])
			{
				res[i]=a[i];
				--same1;
				--same2;
			}
		}
		for (int i = 0; i < n; i++) 
		{
			if(res[i]=='?')
			{
				if(a[i]==b[i])
				{
					if(same1+same2<=0)
						res[i] = getC(a[i], b[i]);
					else
					{
						System.out.println(-1);
						return;
					}
				}
				else
				{
					if(same1>0)
					{
						--same1;
						res[i] = a[i];
					}
					else if(same2>0)
					{
						--same2;
						res[i] = b[i];
					}
					else
						res[i] = getC(a[i], b[i]);					
				}
			}
		}
		if(same1+same2!=0)
			System.out.println(-1);
		else
		{
			StringBuilder sb = new StringBuilder();
			for(char c : res)
				sb.append(c);
			
			System.out.println(sb);
		}
	}	
	

	static class Scanner 
	{
		StringTokenizer st;
		BufferedReader br;
		public Scanner(InputStream s){	br = new BufferedReader(new InputStreamReader(s));}
		public Scanner(String s) throws FileNotFoundException {br = new BufferedReader(new FileReader(s));}
		public String next() throws IOException 
		{
			while (st == null || !st.hasMoreTokens()) 
				st = new StringTokenizer(br.readLine());
			return st.nextToken();
		}
		public int nextInt() throws IOException {return Integer.parseInt(next());}
		public String nextLine() throws IOException {return br.readLine();}		
		public long nextLong() throws IOException {return Long.parseLong(next());}		
		public double nextDouble() throws IOException {return Double.parseDouble(next());}	
		public char nextChar() throws IOException{return next().charAt(0);}
		public boolean ready() throws IOException {return br.ready();}
		public int[] nextIntArr() throws IOException{
			st = new StringTokenizer(br.readLine());
			int[] res = new int[st.countTokens()];
			for (int i = 0; i < res.length; i++)
				res[i] = nextInt();
			return res;
		}
		public char[] nextCharArr() throws IOException{
			st = new StringTokenizer(br.readLine());
			char[] res = new char[st.countTokens()];
			for (int i = 0; i < res.length; i++) 
				res[i] = nextChar();
			return res;
		}
	}

}