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

bccdb
 z
 dfdeed
 aab
 y
 abac

#include <bits/stdc++.h>
using namespace std;
string s1, s2;
map<char, int> M1, M2;
set<int> pos;
string ans;
char getMin(map<char, int> &M) { return M.begin()->first; }
char getMax(map<char, int> &M) { return M.rbegin()->first; }
void eraseChar(map<char, int> &M, char c) {
  if (--M[c] == 0) M.erase(c);
}
int main() {
  ios::sync_with_stdio(0);
  cin >> s1 >> s2;
  int n = s1.size();
  for (int i = 0; i < n; i++) M1[s1[i]]++;
  for (int i = 0; i < n; i++) M2[s2[i]]++;
  for (int i = 0; i < n; i++) pos.insert(i);
  ans = "";
  for (int i = 0; i < n; i++) ans += "?";
  for (int it = 0; it < n; it++) {
    if (it % 2 == 0) {
      if (getMax(M2) > getMin(M1)) {
        int ind = *pos.begin();
        char c = M1.begin()->first;
        ans[ind] = c;
        eraseChar(M1, c);
        pos.erase(ind);
      } else {
        int ind = *pos.rbegin();
        char c = M1.rbegin()->first;
        ans[ind] = c;
        eraseChar(M1, c);
        pos.erase(ind);
      }
    } else {
      if (getMin(M1) < getMax(M2)) {
        int ind = *pos.begin();
        char c = M2.rbegin()->first;
        ans[ind] = c;
        eraseChar(M2, c);
        pos.erase(ind);
      } else {
        int ind = *pos.rbegin();
        char c = M2.begin()->first;
        ans[ind] = c;
        eraseChar(M2, c);
        pos.erase(ind);
      }
    }
  }
  cout << ans << endl;
  return 0;
}
