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.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Map.Entry;
import java.util.Arrays;
import java.util.Queue;
import java.util.StringTokenizer;
import java.util.TreeMap;
import java.util.TreeSet;
public class A {
	public static void main(String[] args)throws Throwable {
		MyScanner sc=new MyScanner();
		PrintWriter pw=new PrintWriter(System.out,true);
		
		int n=sc.nextInt(),t=sc.nextInt();
		char[] s1=sc.next().toCharArray(),s2=sc.next().toCharArray();
		StringBuilder sb=new StringBuilder();
		int dif=0;
		for(int i=0;i<n;i++)
			if(s1[i]!=s2[i])
				dif++;
		boolean ok=true;
		if(dif<=t){
			int r=t-dif;
			for(int i=0;i<n;i++){
				char c1=s1[i],c2=s2[i];
				if(c1==c2){
					if(r>0){
						r--;
						sb.append(f(c1,c2));
					}else
						sb.append(c1);
				}else
					sb.append(f(c1,c2));
			}
		}else{ //they differ in many chars >> try to minimize difference
			int min=dif%2+dif/2;
			ok &=(t>=min);
			int r=2*(dif-t);
			for(int i=0;i<n && ok;i++){
				char c1=s1[i],c2=s2[i];
				if(c1==c2)
					sb.append(c1);
				else{
					if(r>dif-t)
						sb.append(c1);
					else
						if(r>0)
							sb.append(c2);
						else
							sb.append(f(c1,c2));
					r--;
				}
			}
		}
		pw.println(ok? sb : -1);
		pw.flush();
		pw.close();
	}
	
	public static char f(char c1,char c2){
		for(char i='a';i<='c';i++)
			if(i!=c1 && i!=c2)
				return i;
		return 0;
	}
	
	static class MyScanner {
	      BufferedReader br;
	      StringTokenizer st;
	 
	      public MyScanner() {
	         br = new BufferedReader(new InputStreamReader(System.in));
	      }
	 
	      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());
	      }
	 
	      long nextLong() {
	          return Long.parseLong(next());
	      }
	 
	      double nextDouble() {
	          return Double.parseDouble(next());
	      }
	 
	      String nextLine(){
	          String str = "";
		  try {
		     str = br.readLine();
		  } catch (IOException e) {
		     e.printStackTrace();
		  }
		  return str;
	      }

	   }
}