bcdef
abbbc
 z
y
 reddit
abcdef
 abc
aaa
 y
z
 cbxz
aaaa

bccdb
 z
 dfdeed
 aab
 y
 abac

import java.io.*;
import java.util.*;
import java.math.*;

public class _414div2Q3
{
    public static void main(String[] args) throws IOException
    {
        FastScanner obj = new FastScanner();
        out = new PrintWriter(new BufferedOutputStream(System.out));
		
			char[] a1 = obj.next().toCharArray();
            char[] a2 = obj.next().toCharArray();
            int n = a1.length;
            Character a11[] = new Character[n], a22[] = new Character[n];
            for (int i = 0; i < n; i++) {
                a11[i] = a1[i];
                a22[i] = a2[i];
            }

            Arrays.sort(a11);
            Arrays.sort(a22);

            int len1 = n % 2 == 0 ? n / 2 : n / 2 + 1, len2 = n / 2;

            int cnt1[] = new int[26], cnt2[] = new int[26];
            for (int i = 0; i < len1; i++) cnt1[a11[i] - 'a']++;
            for (int i = 0; i < len2; i++) cnt2[a22[n - i - 1] - 'a']++;

            int[] res = new int[n];
            int left = 0, right = n - 1;
            int parity = 0;
            for (int i = 0; i < n; i++) {
                if ((parity & 1) == 0) {
                    boolean allLessOrEqual = true;
                    int first = 0, last = 0;
                    for (int j = 0; j < 26; j++) {
                        if (cnt1[j] != 0) {
                            first = j;
                            break;
                        }
                    }
                    for (int j = 25; j >= 0; j--) {
                        if (cnt1[j] != 0) {
                            last = j;
                            break;
                        }
                    }
                    for (int j = 0; j < 26; j++) {
                        if (cnt2[j] != 0) {
                            allLessOrEqual &= j <= first;
                        }
                    }

                    if (allLessOrEqual) {
                        res[right--] = last;
                        cnt1[last]--;
                    } else {
                        res[left++] = first;
                        cnt1[first]--;
                    }
                } else {
                    int bigger = 0, smaller = 0;
                    boolean allBiggerOrEqual = true;
                    for (int j = 0; j < 26; j++) {
                        if (cnt2[j] != 0) {
                            smaller = j;
                            break;
                        }
                    }
                    for (int j = 25; j >= 0; j--) {
                        if (cnt2[j] != 0) {
                            bigger = j;
                            break;
                        }
                    }
                    for (int j = 0; j < 26; j++) {
                        if (cnt1[j] != 0) {
                            allBiggerOrEqual &= j >= bigger;
                        }
                    }

                    if (allBiggerOrEqual) {
                        res[right--] = smaller;
                        cnt2[smaller]--;
                    } else {
                        res[left++] = bigger;
                        cnt2[bigger]--;
                    }
                }
                parity = 1 - parity;
            }

            for (int i = 0; i < n; i++)
                out.print((char) (res[i] + 'a'));
            out.println();
        
        out.close();		
	}
 
   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;
      
   //-----------FastScanner class for faster input----------
   public static class FastScanner {
        BufferedReader br;
        StringTokenizer tokenizer;
 
        public FastScanner() throws IOException {
            br = new BufferedReader(new InputStreamReader(System.in));
            tokenizer = new StringTokenizer(br.readLine().trim());
        }
 
        String next() {
            while (tokenizer == null || !tokenizer.hasMoreElements()) {
                try {
                    tokenizer = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                    }
            }
          return tokenizer.nextToken();
        }
 
        int nextInt() {
            return Integer.parseInt(next());
        }
 
        long nextLong() {
            return Long.parseLong(next());
        }
 
        double nextDouble() {
            return Double.parseDouble(next());
        }
      
        int[] nextIntArray() throws IOException {
            String[] line = br.readLine().trim().split(" ");
            int[] out = new int[line.length];
            
            for (int i = 0; i < line.length; i++) {
                out[i] = Integer.valueOf(line[i]);
            }
            return out;
        }
        
        BigInteger nextBigInteger() throws IOException {
            return new BigInteger(next());
        }
        
        String nextLine(){
            String str = "";
	        try {
	            str = br.readLine();
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	        return str;
        }
 
   }
   //--------------------------------------------------------
} 