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

public class Solution {

    private static void solve(InputReader in, OutputWriter out) {
        int n, same;
        n = in.nextInt();
        same = n - in.nextInt();

        String s1, s2;
        s1 = in.next();
        s2 = in.next();

        int cnt = 0;
        for (int i = 0; i < n; i++)
            if (s1.charAt(i) == s2.charAt(i)) cnt++;

        if (same >= cnt) {
            if ((n - cnt) < 2 * (same - cnt))
                out.print(-1);

            else {
                int first, second;
                first = second = same - cnt;

                for (int i = 0; i < n; i++)
                    if (s1.charAt(i) == s2.charAt(i))
                        out.print(s1.charAt(i));

                    else {
                        if (first > 0) {
                            first--;
                            out.print(s1.charAt(i));

                        } else if (second > 0) {
                            second--;
                            out.print(s2.charAt(i));

                        } else {
                            if (s1.charAt(i) != 'a' && s2.charAt(i) != 'a')
                                out.print('a');

                            else if (s1.charAt(i) != 'b' && s2.charAt(i) != 'b')
                                out.print('b');

                            else
                                out.print('c');
                        }
                    }
            }
        } else {
            for (int i = 0; i < n; i++)
                if (s1.charAt(i) == s2.charAt(i) && same > 0) {
                    out.print(s1.charAt(i));
                    same--;

                } else {
                    if (s1.charAt(i) != 'a' && s2.charAt(i) != 'a')
                        out.print('a');

                    else if (s1.charAt(i) != 'b' && s2.charAt(i) != 'b')
                        out.print('b');

                    else
                        out.print('c');
                }
        }
    }

    public static void main(String[] args) {
        InputReader in = new InputReader(System.in);
        OutputWriter out = new OutputWriter(System.out);
        solve(in, out);
        in.close();
        out.close();
    }

    private static class InputReader {
        private BufferedReader br;
        private StringTokenizer st;

        InputReader(InputStream is) {
            br = new BufferedReader(new InputStreamReader(is));
            st = null;
        }

        String nextLine() {
            String line = null;
            try {
                line = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return line;
        }

        String next() {
            while (st == null || !st.hasMoreTokens()) {
                String line = nextLine();
                if (line == null) return null;
                st = new StringTokenizer(line);
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

        long nextLong() {
            return Long.parseLong(next());
        }

        double nextDouble() {
            return Double.parseDouble(next());
        }

        void close() {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    private static class OutputWriter {
        BufferedWriter bw;

        OutputWriter(OutputStream os) {
            bw = new BufferedWriter(new OutputStreamWriter(os));
        }

        void print(int i) {
            print(Integer.toString(i));
        }

        void println(int i) {
            println(Integer.toString(i));
        }

        void print(long l) {
            print(Long.toString(l));
        }

        void println(long l) {
            println(Long.toString(l));
        }

        void print(double d) {
            print(Double.toString(d));
        }

        void println(double d) {
            println(Double.toString(d));
        }

        void print(boolean b) {
            print(Boolean.toString(b));
        }

        void println(boolean b) {
            println(Boolean.toString(b));
        }

        void print(char c) {
            try {
                bw.write(c);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        void println(char c) {
            println(Character.toString(c));
        }

        void print(String s) {
            try {
                bw.write(s);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        void println(String s) {
            print(s);
            print('\n');
        }

        void close() {
            try {
                bw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}