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

public class Solution {
	static final int MAX = 1000001;
	public static void main(String[] args) {
		InputReader in = new InputReader();
		PrintWriter out = new PrintWriter(System.out);
		final long start = System.currentTimeMillis();		
		new Task1().solve(in, out);
		@SuppressWarnings("unused")
		final long duration = System.currentTimeMillis()-start;
		out.close();
	}
	
	static class Task1{
		public void solve(InputReader in, PrintWriter out){
			char[] aa = in.next().toCharArray();
			char[] bb = in.next().toCharArray();
			int n = aa.length;
			Arrays.sort(aa);
			Arrays.sort(bb);
			
			char[] a = new char[(n+1)/2];
			char[] b = new char[n/2];
			int alen = a.length, blen = b.length;

			for(int i=0; i<=blen; i++){
				if(i<blen)
					b[i] = bb[n-1-i];
				if(i<alen)
					a[i] = aa[i];
			}
			

			int a_start = 0, a_end = alen-1, b_start = 0, b_end = blen-1, f_start = 0, f_end = n-1;
			char[] f = new char[n];
			for(int k=0; k<n; k++){
				if(k%2==0){
					if(a_start<alen && b_start<blen && a[a_start]<b[b_start]){
						f[f_start++] = a[a_start++];
					} else {
						f[f_end--] = a[a_end--];
					}
				}
				else{
					if(a_start<alen && b_start<blen && b[b_start]>a[a_start]){
						f[f_start++] = b[b_start++];
					} else {
						f[f_end--] = b[b_end--];
					}
				}
			}

			for(char x: f)
				out.print(x);
		}
	}
	
	static class InputReader {
		public BufferedReader reader;
		public StringTokenizer tokenizer;

		public InputReader() {
			reader = new BufferedReader(new InputStreamReader(System.in));
			tokenizer = null;
		}
		
		public String next() {
			while (tokenizer == null || !tokenizer.hasMoreTokens()) {
				try {
					tokenizer = new StringTokenizer(reader.readLine());
				} catch (IOException e) {
					throw new RuntimeException(e);
				}
			}
			return tokenizer.nextToken();
		}
		
		public int nextInt() {
			return Integer.parseInt(next());
		}
		
		public long nextLong() {
			return Long.parseLong(next());
		}
		
		public double nextDouble() {
			return Double.parseDouble(next());
		}
		
		public String nextLine() {
			String s=null;
			try{
				s = reader.readLine();
			} catch(IOException e){
				throw new RuntimeException(e);
			}
			return s;
        }
		
		public String nextParagraph() {
			String line=null;
			String ans = "";
			try{
				while ((line = reader.readLine()) != null) {
				ans += line;
				}
			} catch(IOException e){
				throw new RuntimeException(e);
			}
			return ans;
		}
		
	}
}