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

/**
 * Problem Cf584C
 */
public class Cf584C {

    public void run() {
        int n = in.nextInt();
        int t = in.nextInt();
        int m = 0;
        char[] s1 = in.next().toCharArray();
        char[] s2 = in.next().toCharArray();
        char[] s3 = new char[n]; Arrays.fill(s3, '0');
        for(int i = 0; i < n; ++i){
            if(s1[i]==s2[i]){
                m++;
                s3[i]=s1[i];
            }
        }
        int d = n-m;
        if(t < d-(d/2)) out.println(-1);
        else {
            if(d>t) {
                int j = 1;
                for(int i = 0; i < n && d!=t; ++i){
                    if(s3[i]=='0'){
                        j=Math.max(j, i+1);
                        while(j<n&&s3[j]!='0') j++;
                        if(j==n) continue;
                        s3[i]=s1[i];
                        s3[j]=s2[j];
                        d--;
                    }
                }
            } else if (d<t) {
                for(int i = 0; i < n && d!=t; ++i){
                    if(s3[i]!='0'){
                        s3[i]=not(s1[i],s2[i]);
                        d++;
                    }
                }
            }
            for(int i = 0; i < n; ++i){
                if(s3[i]=='0'){
                    s3[i]=not(s1[i],s2[i]);
                }
            }
            out.println(new String(s3));
        }
    }

    char not(char a, char b){
        char c = 'a';
        while(c==a||c==b) c++;
        return c;
    }

    /***********************************************************
     *                      BOILERPLATE                        *
    /***********************************************************/
    public InputReader in = new InputReader(System.in);
    public PrintWriter out = new PrintWriter(System.out);
    public void close() {out.close();}
    static class InputReader {
        public BufferedReader reader;
        public StringTokenizer tokens = null;
        public InputReader(InputStream stream) {
            reader = new BufferedReader(new InputStreamReader(stream), 32768);}
        private boolean prime() {
            while (tokens == null || !tokens.hasMoreTokens()) {
                try {
                    String line = reader.readLine();
                    if(line==null) return false; // EOF
                    tokens = new StringTokenizer(line);
                } catch (IOException e) {throw new RuntimeException(e);}
            } return true;}
        public boolean hasNext() {return prime();}
        public String next() {prime(); return tokens.nextToken();}
        public int nextInt() {return Integer.parseInt(next());}
        public long nextLong() {return Long.parseLong(next());}
        public double nextDouble() {return Double.parseDouble(next());}
    }
    public static void main(String[] args) {
        Cf584C task = new Cf584C(); task.run(); task.close();}
}