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.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.TreeSet;

public class NamingCompany {
	public static int OlegLetters[] = new int[26];
	public static int IgorLetters[] = new int[26];
	public static int getLeast(int[] x)
	{
		for (int i=0;i<26;i++)
		{
			if (x[i]>0)
				return i;
		}
		return 1;
	}
	public static int getMost(int[] x)
	{
		for (int i=25;i>=0;i--)
		{
			if (x[i]>0)		
				return i;
		}
		return 1;
	}
	public static boolean LessThanMe(int a)
	{
		int x = getMost(IgorLetters);
		if (x<=a)
			return true;
		return false;
	}
	public static boolean MoreThanMe(int a)
	{
		int x = getLeast(OlegLetters);
		if (x>=a)
			return true;
		return false;
	}
	public static void main(String args[]) throws IOException
	{
		Scanner sc = new Scanner(System.in);
		PrintWriter pw = new PrintWriter(System.out);
		String Oleg = sc.nextLine();
		String Igor = sc.nextLine();
		int n = Oleg.length();
		TreeSet<Integer> emptyPositions = new TreeSet<Integer>();
		for (int i=0;i<n;i++)
		{
			int c = Oleg.charAt(i);
			OlegLetters[c-'a']++;
			c = Igor.charAt(i);
			IgorLetters[c-'a']++;
			emptyPositions.add(i);
		}
		boolean OlegTurn = true;
		int o[] = new int[26];
		int il[] = new int[26];
		for (int i=0;i<n;i++)
		{
			if (OlegTurn)
			{
				int x = getLeast(OlegLetters);
				o[x]++;
				OlegLetters[x]--;
			}
			else
			{
				int x = getMost(IgorLetters);
				il[x]++;
				IgorLetters[x]--;
			}
			OlegTurn = !OlegTurn;
		}
		OlegLetters = o;
		IgorLetters = il;
		int results[] = new int[n];
		OlegTurn = true;
		for (int i=0;i<n;i++)
		{
			if (OlegTurn)
			{
				int x = getLeast(OlegLetters);
				int p;
				if (LessThanMe(x))
				{
					p = emptyPositions.last();
					x = getMost(OlegLetters);
				}
				else
					p = emptyPositions.first();
				results[p] = x;
				OlegLetters[x]--;
				emptyPositions.remove(p);
			}
			else
			{
				int x = getMost(IgorLetters);
				int p;
				if (MoreThanMe(x))
				{
					p = emptyPositions.last();
					x = getLeast(IgorLetters);
				}
				else
					p = emptyPositions.first();
				results[p] = x;
				IgorLetters[x]--;
				emptyPositions.remove(p);
			}
			OlegTurn  = !OlegTurn;
		}
		for (int j=0;j<n;j++)
			pw.print((char) (results[j]+'a'));
		pw.println();
		pw.flush();
		pw.close();
	}
	static class Scanner 
	{
		StringTokenizer st;
		BufferedReader br;
	
		public Scanner(InputStream s){	br = new BufferedReader(new InputStreamReader(s));}
	
		public String next() throws IOException 
		{
			while (st == null || !st.hasMoreTokens()) 
				st = new StringTokenizer(br.readLine());
			return st.nextToken();
		}
	
		public int nextInt() throws IOException {return Integer.parseInt(next());}
		
		public long nextLong() throws IOException {return Long.parseLong(next());}
	
		public String nextLine() throws IOException {return br.readLine();}
		
		public boolean ready() throws IOException {return br.ready();}
	
	
	}
}
