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.util.Scanner;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author Madi
 */
public class C584 {

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

        char[] ab = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};

        int count = 0;
        boolean[] miss = new boolean[n];
        for (int i = 0; i < n; i++) {
            if (a[i] != b[i]) {
                miss[i] = true;
                count++;
            }
        }

        char[] res = new char[n];
        if (count > t) {

            if (2 * (count - t) > count) {
                System.out.println("-1");
                return;
            } else {
                int cnt = 0;
                for (int i = 0; i < n; i++) {
                    if (miss[i] && cnt < count - t) {
                        res[i] = a[i];
                        cnt++;
                    } else if (miss[i] && cnt < 2 * (count - t)) {
                        res[i] = b[i];
                        cnt++;
                    } else if (!miss[i]) {
                        res[i] = a[i];
                    } else {
                        for (int j = 0; j < ab.length; j++) {
                            if (ab[j] != a[i] && ab[j] != b[i]) {
                                res[i] = ab[j];
                                break;
                            }
                        }
                    }
                }
                System.out.println(res);
                return;
            }
        }
        int diff = t - count;
        for (int i = 0; i < n; i++) {
            if (a[i] == b[i] && diff > 0) {
                for (int j = 0; j < ab.length; j++) {
                    if (ab[j] != a[i]) {
                        res[i] = ab[j];
                        diff--;
                        break;
                    }
                }
            } else if (a[i] != b[i]) {
                for (int j = 0; j < ab.length; j++) {
                    if (ab[j] != a[i] && ab[j] != b[i]) {
                        res[i] = ab[j];
                        break;
                    }
                }
            } else {
                res[i] = a[i];
            }
        }

        System.out.println(res);

    }
}