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:
//package solution;

import java.io.*;
import java.util.*;
import java.awt.Point;
import java.math.BigInteger;

public final class Main {
    BufferedReader br;
    StringTokenizer stk;

    public static void main(String[] args) throws Exception {
        new Thread(null, new Runnable() {
            @Override
            public void run() {
                try {
                    new Main().run();
                } catch(Exception | Error ex) {ex.printStackTrace();}
            }
        }, "solution", 1<<26).start();
    }
    
    {
        stk = null;
        br = new BufferedReader(new InputStreamReader(System.in));
    }
    
    long mod = 998244353;
    void run() throws Exception {
        int n = ni(), t = ni();
        char[] a = nt().toCharArray();
        char[] b = nt().toCharArray();
        char[] c = new char[n];
        Arrays.fill(c, '#');
        
        int turn = 0, diffA = 0, diffB = 0;
        for(int i=0; i<n; i++) {
            if(a[i] != b[i]) {
                if(turn % 2 == 0) {
                    c[i] = a[i];
                    diffA++;
                } else {
                    c[i] = b[i];
                    diffB++;
                }
                turn++;
            }
            if(diffA == t && diffB == t)
                break;
        }
        
        turn = 0;
        for(int i=0; i<n; i++) {
            if(diffA == t && diffB == t)
                break;
            if(a[i] != b[i]) {
                if(turn % 2 == 0) {
                    c[i] = find(a, b, i);
                    diffB++;
                } else {
                    c[i] = find(a, b, i);
                    diffA++;
                }
                turn++;
            }
        }
        
        for(int i=0; i<n; i++) {
            if(diffA == t && diffB == t)
                break;
            if(a[i] == b[i]) {
                if(t - diffA > 0 && t - diffB > 0) {
                    c[i] = find(a, b, i);
                    diffA++; diffB++;
                }
            }
        }
        
        for(int i=0; i<n; i++) {
            if(c[i] == '#')
                c[i] = a[i];
        }
        
        if(diff(a, c) == diff(b, c) && diff(b, c) == t) {
            pl(new String(c));
        } else {
            pl("-1");
        }
    }
    
    char find(char[] s1, char[] s2, int idx) {
        char a = s1[idx];
        char b = s2[idx];
        for(char c='a'; c<='z'; c++) {
            if(c != a && c != b)
                return c;
        }
        return ' '; // unreachable
    }
    
    int diff(char[] a, char[] b) {
        int count = 0;
        for(int i=0; i<a.length; i++) {
            if(a[i] != b[i])
                count++;
        }
        return count;
    }
    
    //4 3 pqcc pbcc
    
    //Reader & Writer
    String nextToken() throws Exception {
        if (stk == null || !stk.hasMoreTokens()) {
            stk = new StringTokenizer(br.readLine(), " ");
        }
        return stk.nextToken();
    }

    String nt() throws Exception {
        return nextToken();
    }

    String ns() throws Exception {
        return br.readLine();
    }

    int ni() throws Exception {
        return Integer.parseInt(nextToken());
    }

    long nl() throws Exception {
        return Long.parseLong(nextToken());
    }

    double nd() throws Exception {
        return Double.parseDouble(nextToken());
    }

    void p(Object o) {
        System.out.print(o);
    }

    void pl(Object o) {
        System.out.println(o);
    }
}