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

bccdb
 z
 dfdeed
 aab
 y
 abac

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.BitSet;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Random;
import java.util.Set;
import java.util.Stack;
import java.util.StringTokenizer;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.Vector;
import java.util.regex.Matcher;
import java.util.regex.Pattern;



public class CF414C {

    static StringTokenizer st;
    static BufferedReader br;
    static PrintWriter pw;

    static class Sort implements Comparable<Sort> {
        int ind, a;

        @Override
        public int compareTo(Sort o) {
            return a - o.a;
        }
        public Sort(int i, int an) {
            ind = i;
            a = an;
        }
    }

    public static void main(String[] args) throws IOException {
        br = new BufferedReader(new InputStreamReader(System.in));
        pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
        solve();
        pw.close();
    }
    
    private static void solve() throws IOException {
    	char[] o = next().toCharArray();
    	char[] g = next().toCharArray();
    	int n = o.length;
    	int[] co = new int [26];
    	int[] go = new int [26];
    	for (int i = 0; i < n; ++i) {
    		co[o[i] - 'a']++;
    		go[g[i] - 'a']++;
    	}
    	int cl = 0;
    	for (int i = 0; i < 26; ++i) {
    		while (co[i] > 0) {
    			o[cl++] = (char) (i + 'a');
    			co[i]--;
    		}
    	}
    	cl = 0;
    	for (int i = 25; i >= 0; --i) {
    		while (go[i] > 0) { 
    			g[cl++] = (char) (i + 'a');
    			go[i]--;
    		}
    	}
    	int ol = 0, or = (n - 1) / 2;
    	int gl = 0, gr = n - or - 2;
    	//if (n % 2 == 0)
    	//	--gl;
    	cl = 0;
    	int cr = n - 1;
    	char[] ans = new char [n];
    	/*for (int i = ol; i <= or; ++i)
    		pw.print(o[i]);
    	pw.println();
    	for (int i = gl; i <= gr; ++i)
    		pw.print(g[i]);
    	pw.println();*/
    	for (int i = 0; i < n; ++i) {
    		if (i % 2 == 0) {
    			if (gl > gr) 
    				ans[cl++] = o[ol++];
    			else {
    				if (o[ol] < g[gl]) {
    					ans[cl++] = o[ol++];
    				} else {
    					ans[cr--] = o[or--];
    				}
    			}
    		} else {
    			if (ol > or) 
    				ans[cl++] = g[gl++];
    			else {
    				if (g[gl] <= o[ol]) 
    					ans[cr--] = g[gr--];
    				else {
    					ans[cl++] = g[gl++];
    				}
    			}
    		}
    	}
    	pw.println(String.valueOf(ans));
    }

	private static int sumf(int[] fen, int id) {
        int summ = 0;
        for (; id >= 0; id = (id & (id + 1)) - 1)
            summ += fen[id];
        return summ;
    }

    private static void addf(int[] fen, int id) {
        for (; id < fen.length; id |= id + 1)
            fen[id]++;
    }

    private static int nextInt() throws IOException {
        return Integer.parseInt(next());
    }
    private static long nextLong() throws IOException {
        return Long.parseLong(next());
    }
    private static double nextDouble() throws IOException {
        return Double.parseDouble(next());
    }
    private static String next() throws IOException {
        while (st==null || !st.hasMoreTokens())
            st = new StringTokenizer(br.readLine());
        return st.nextToken();
    }
}