#include <bits/stdc++.h>
using namespace std;
inline void R(int &v) {
  static char ch;
  v = 0;
  bool p = 0;
  do {
    ch = getchar();
    if (ch == '-') p = 1;
  } while (!isdigit(ch));
  while (isdigit(ch)) {
    v = (v + (v << 2) << 1) + (ch ^ '0');
    ch = getchar();
  }
  if (p) v = -v;
}
inline void R(long double &v) {
  static char ch;
  v = 0;
  bool p = 0;
  do {
    ch = getchar();
    if (ch == '-') p = 1;
  } while (!isdigit(ch));
  while (isdigit(ch)) {
    v = v * 10 + (ch ^ '0');
    ch = getchar();
  }
  if (p) v = -v;
}
char ol[600005], lg[600005];
int n;
char ans[600005];
int tot1l, tot2l, tot1r, tot2r;
inline bool cmp1(const char &a, const char &b) { return a > b; }
int l, r;
int main() {
  scanf("%s", ol + 1);
  scanf("%s", lg + 1);
  n = strlen(ol + 1);
  sort(ol + 1, ol + n + 1);
  sort(lg + 1, lg + n + 1, cmp1);
  l = 0, r = n - 1;
  tot1l = tot2l = 1;
  tot1r = tot2r = n / 2;
  if (n % 2 == 1) tot1r++;
  if (n % 2 == 1) {
    for (int i = 0; i < n; ++i) {
      if (i % 2 == 0) {
        if (ol[tot1l] < lg[tot2l]) {
          ans[l++] = ol[tot1l++];
        } else
          ans[r--] = ol[tot1r--];
      } else {
        if (ol[tot1l] < lg[tot2l]) {
          ans[l++] = lg[tot2l++];
        } else
          ans[r--] = lg[tot2r--];
      }
    }
  } else {
    for (int i = 0; i < n; ++i) {
      if (i % 2 == 0) {
        if (ol[tot1l] < lg[tot2l]) {
          ans[l++] = ol[tot1l++];
        } else
          ans[r--] = ol[tot1r--];
      } else {
        if (ol[tot1l] < lg[tot2l]) {
          ans[l++] = lg[tot2l++];
        } else
          ans[r--] = lg[tot2r--];
      }
    }
  }
  printf("%s", ans);
  return 0;
}
