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

bccdb
 z
 dfdeed
 aab
 y
 abac

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.InputMismatchException;

public class C794{

	void solve()
	{
		char[] oleg = ca();
		Arrays.sort(oleg);
		char[] igor = ca();
		Arrays.sort(igor);
		
		int[] fst = new int[26];
		int[] scd = new int[26];
		
		for(int i=0;i<(oleg.length+1)/2;i++) fst[oleg[i]-'a']++;
		for(int i=igor.length-1, j=0;j<igor.length/2;i--,j++) scd[igor[i]-'a']++;
		
		char[] ans = new char[oleg.length];
		int ptr1 = 0, ptr2 = ans.length-1;
		
		for(int r=0;r<igor.length;r++)
		{
			if(r%2==0)
				if(min(fst) < max(scd))
					ans[ptr1++] = getFirst(fst);
				else
					ans[ptr2--] = getLast(fst);
			else
				if(max(scd) > min(fst))
					ans[ptr1++] = getLast(scd);
				else
					ans[ptr2--] = getFirst(scd);
		}
		out.println(new String(ans));
	}
	
	char getFirst(int[] a)
	{
		for(int i=0;i<26;i++)
			if(a[i] != 0)
			{
				a[i]--;
				return (char)(i + 'a'); 
			}
		return '\0';
	}
	
	char getLast(int[] a)
	{
		for(int i=25;i>=0;i--)
			if(a[i] != 0)
			{
				a[i]--;
				return (char)(i + 'a');
			}
		return '\0';
	}
	
	int min(int[] a)
	{
		for(int i=0;i<26;i++)
			if(a[i] != 0)
				return i;
		return 26;
	}
	
	int max(int[] a)
	{
		for(int i=25;i>=0;i--)
			if(a[i] != 0)
				return i;
		return -1;
	}
	
	public static void main(String[] args){new C794().run();}
	
	private byte[] bufferArray = new byte[1024];
	private int bufLength = 0;
	private int bufCurrent = 0;
	InputStream inputStream;
	PrintWriter out;
	
	public void run()
	{
		inputStream = System.in;
		out = new PrintWriter(System.out);
		solve();
		out.flush();
	}
	
	int nextByte()
	{
		if(bufLength==-1)
			throw new InputMismatchException();
		if(bufCurrent>=bufLength)
		{
			bufCurrent = 0;
			try
			{bufLength = inputStream.read(bufferArray);}
			catch(IOException e)
			{ throw new InputMismatchException();}
			if(bufLength<=0)
				return -1;
		}
		return bufferArray[bufCurrent++];
	}
	
	boolean isSpaceChar(int x)
	{return (x<33 || x>126);}
	
	boolean isDigit(int x)
	{return (x>='0' && x<='9');}
	
	int nextNonSpace()
	{
		int x;
		while((x=nextByte())!=-1 && isSpaceChar(x));
		return x;
	}
	
	int ni()
	{
		long ans = nl();
		if ( Integer.MIN_VALUE <= ans && ans <= Integer.MAX_VALUE )
			return (int)ans;
		throw new InputMismatchException();
	}
	
	long nl()
	{
		long ans = 0;
		boolean neg = false;
		int x = nextNonSpace();
		if(x=='-') 
		{
			neg = true;
			x = nextByte();
		}
		while(!isSpaceChar(x))
		{
			if(isDigit(x))
			{
				ans = ans*10 + x -'0';
				x = nextByte();
			}
			else
				throw new InputMismatchException();
		}
		return neg ? -ans:ans;
	}
	
	String ns()
	{
		StringBuilder sb = new StringBuilder();
		int x = nextNonSpace();
		while(!isSpaceChar(x))
		{
			sb.append((char)x);
			x = nextByte();
		}
		return sb.toString();
	}
	
	char nc()
	{ return (char)nextNonSpace();}
	
	double nd()
	{ return (double)Double.parseDouble(ns()); }
	
	char[] ca()
	{ return ns().toCharArray();}
	
	char[] ca(int n)
	{
		char[] ans = new char[n];
		int p =0;
		int x = nextNonSpace();
		while(p<n)
		{
			ans[p++] = (char)x;
			x = nextByte();
		}
		return ans;
	}
	
	int[] ia(int n)
	{
		int[] ans = new int[n];
		for(int i=0;i<n;i++)
			ans[i]=ni();
		return ans;
	}
	
}
