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;

/**
 * Created by mohannadhassan on 10/6/15.
 */
public class MarinaVasya {

    public static void main(String [] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] input = br.readLine().split(" ");
        int n = Integer.parseInt(input[0]);
        int t = Integer.parseInt(input[1]);

        String s1 = br.readLine();
        String s2 = br.readLine();

        char [] ans = new char[n];
        
        boolean [] isSimilar = new boolean[n];
        int similarCount = 0;
        for (int i = 0; i < n; i++) {
            if (s1.charAt(i) == s2.charAt(i)) {
                isSimilar[i] = true;
                similarCount++;
            }
        }
        
        // Current count
        int dc = n - similarCount;
        int sc = similarCount;
        
        // Requested count
        int dr = t;
        int sr = n - t;
        
        if (t == 0) {
            ans = s1.equals(s2) ? s2.toCharArray() : null;
        }
        else if (sr <= sc) {
        	for (int i = 0; i < n; i++) {
                if (!isSimilar[i]) {
                    ans[i] = getChar(s1.charAt(i), s2.charAt(i));
                    t--;
                }
            }
            for (int i = 0; i < n; i++) {
                if (isSimilar[i]) {
                    if (t > 0) {
                        ans[i] = getChar(s1.charAt(i), s2.charAt(i));
                        t--;
                    }
                    else  {
                        ans[i] = s1.charAt(i);
                    }
                }
            }
		}
        else {
        	int temp = sr - sc;
        	int temp1 = temp;
        	int temp2 = temp;
        	
        	if (dc == dr + temp && dc >= temp * 2) {
				for (int i = 0; i < n; i++) {
					if (isSimilar[i]) {
						ans[i] = s1.charAt(i);
					}
					else {
						if (temp1 > 0) {
							ans[i] = s1.charAt(i);
							temp1--;
						}
						else if (temp2 > 0) {
							ans[i] = s2.charAt(i);
							temp2--;
						}
						else {
							ans[i] = getChar(s1.charAt(i), s2.charAt(i));
						}
					}
				}
			}
        	else {
        		ans = null;
        	}
        }

        System.out.println(ans == null ? "-1" : new String(ans));
    }

    public static char getChar(char c1, char c2) {
        for (char temp = 'a'; temp <= 'z'; temp++) {
            if (temp != c1 && temp != c2)
                return temp;
        }
        return 'a';
    }
}