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


public class Program {

    BufferedReader br;
    PrintWriter out;
    StringTokenizer st;
    boolean eof;

    static final int MOD = 1000000007;
    static final double INF = 10000000000.0;
    
 	void solve() throws IOException {
 		int n, t;
 		n = nextInt();
 		t = nextInt();
 		String a, b;
 		a = nextString();
 		b = nextString();
 		int diff = 0;
 		for(int i = 0; i < a.length(); i++)
 			if (a.charAt(i) != b.charAt(i))
 				diff++;
 		if (diff > t * 2)
 		{
 			out.println(-1);
 			return;
 		}
 		boolean[] a1, a2;
 		int c1, c2;
 		c1 = c2 = 0;
 		a1 = new boolean[n];
 		a2 = new boolean[n];
 		for(int i = 0; i < n; i++)
 			if (a.charAt(i) != b.charAt(i))
 			{
 				c1++;
 				a1[i] = true;
 				if (c1 == t)
 					break;
 			}
 		for(int i = n-1; i >= 0; i--)
	 		if (a.charAt(i) != b.charAt(i))
	 		{
	 			c2++;
	 			a2[i] = true;
	 			if (c2 == t)
	 				break;
	 		}
 		if (c1 != t)
 		{
 			for(int i = 0; i < n; i++)
 				if (a.charAt(i) == b.charAt(i))
 				{
 					c1++;
 					c2++;
 					a1[i] = true;
 					a2[i] = true;
 					if(c1 == t)
 						break;
 				}
 		}
 		char[] ans = new char[n];
 		for(int i = 0; i < n; i++)
 		{
 			if (!a1[i])
 				ans[i] = a.charAt(i);
 			if (!a2[i])
 				ans[i] = b.charAt(i);
 			if(a1[i] && a2[i])
 			{
 				for(char j = 'a'; j <= 'z'; j++)
 					if (j != a.charAt(i) && j != b.charAt(i))
 					{
 						ans[i] = j;
 						break;
 					}
 			}
 		}
 		out.println(ans);
    }

    Program() throws IOException {
        br = new BufferedReader(new InputStreamReader(System.in));
        out = new PrintWriter(System.out);
        solve();
        out.close();
    }

    public static void main(String[] args) throws IOException {
        new Program();
    }

    String nextToken() {
        while (st == null || !st.hasMoreTokens()) {
            try {
                st = new StringTokenizer(br.readLine());
            } catch (Exception e) {
                eof = true;
                return null;
            }
        }
        return st.nextToken();
    }

    String nextString() {
        try {
            return br.readLine();
        } catch (IOException e) {
            eof = true;
            return null;
        }
    }

    int nextInt() throws IOException {
        return Integer.parseInt(nextToken());
    }

    long nextLong() throws IOException {
        return Long.parseLong(nextToken());
    }

    double nextDouble() throws IOException {
        return Double.parseDouble(nextToken());
    }
    
    class Pair implements Comparable<Pair>{

        char first;
        int second;

        public Pair(char an1, int an2){
            first = an1;
            second = an2;
        }

        @Override
        public int compareTo(Pair o) {
            if (first - o.first == 0)
            	return second - o.second;
            else
            	return first - o.first;
        }
    }
}