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 PYTHON3):

Solution:
import os
import sys
from io import BytesIO, IOBase
 
BUFSIZE = 8192
 
 
class FastIO(IOBase):
    newlines = 0
 
    def __init__(self, file):
        self._fd = file.fileno()
        self.buffer = BytesIO()
        self.writable = "x" in file.mode or "r" not in file.mode
        self.write = self.buffer.write if self.writable else None
 
    def read(self):
        while True:
            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
            if not b:
                break
            ptr = self.buffer.tell()
            self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
        self.newlines = 0
        return self.buffer.read()
 
    def readline(self):
        while self.newlines == 0:
            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
            self.newlines = b.count(b"\n") + (not b)
            ptr = self.buffer.tell()
            self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
        self.newlines -= 1
        return self.buffer.readline()
 
    def flush(self):
        if self.writable:
            os.write(self._fd, self.buffer.getvalue())
            self.buffer.truncate(0), self.buffer.seek(0)
 
 
class IOWrapper(IOBase):
    def __init__(self, file):
        self.buffer = FastIO(file)
        self.flush = self.buffer.flush
        self.writable = self.buffer.writable
        self.write = lambda s: self.buffer.write(s.encode("ascii"))
        self.read = lambda: self.buffer.read().decode("ascii")
        self.readline = lambda: self.buffer.readline().decode("ascii")
 
 
sys.stdin, sys.stdout = IOWrapper(sys.stdin), IOWrapper(sys.stdout)
input = lambda: sys.stdin.readline().rstrip("\r\n")
####################################
n,t=map(int,input().split())
s1=input()
s2=input()
l=[]
c=0
for i in range(n):
    if s1[i]!=s2[i]:
        c+=1
if c>2*t:
    print(-1)
else:
    if c<=t:
        for i in range(n):
            if s1[i]!=s2[i]:
                if abs(ord(s1[i])-ord(s2[i]))>1:
                    l.append(chr(min(ord(s2[i])+1,ord(s1[i])+1)))
                else:
                    if max(ord(s1[i])+1,ord(s2[i])+1)>122:
                        l.append(chr(max(ord(s1[i]),ord(s2[i]))-2))
                    else:
                        l.append(chr(max(ord(s1[i])+1,ord(s2[i])+1)))
                t-=1
            else:
                l.append(s1[i])
        if t>0:
            i=0
            while t:
                if s1[i]==s2[i]:
                    if s1[i]!='z':
                        l[i]='z'
                    else:
                        l[i]='y'
                    t-=1
                i+=1
                if i==n:
                    break
        print(''.join(l))
    else:
        i=0
        a=0
        x=2*t-c
        c=c-x
        l=['']*n
        while x>0:
            if s1[i]!=s2[i]:
                if abs(ord(s1[i])-ord(s2[i]))>1:
                    l[i]=chr(min(ord(s2[i])+1,ord(s1[i])+1))
                else:
                    if max(ord(s1[i])+1,ord(s2[i])+1)>122:
                        l[i]=chr(max(ord(s1[i]),ord(s2[i]))-2)
                    else:
                        l[i]=chr(max(ord(s1[i])+1,ord(s2[i])+1))
                x-=1
            else:
                l[i]=s1[i]
            i+=1
            if i==n:
                break
        while c:
            if s1[i]!=s2[i]:
                if a%2:
                    l[i]=s1[i]
                    c-=1
                    a=a^1
                else:
                    l[i]=s2[i]
                    c-=1
                    a=a^1
            else:
                l[i]=s1[i]
            i+=1
            if i==n:
                break
        if i!=n:
            while i<n:
                if s1[i]==s2[i]:
                    l[i]=s1[i]
                i+=1
        print(''.join(l))