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

bccdb
 z
 dfdeed
 aab
 y
 abac

#include <bits/stdc++.h>
using std::cin;
using std::cout;
using std::endl;
long long Factorial(long long i) { return i > 1 ? i * Factorial(i - 1) : 1; }
long long Combination(long long n, long long r) {
  if (n - r < r) r = n - r;
  long long ansn = 1, ansr = 1;
  for (long long i = n - r + 1; i <= n; ++i) ansn *= i;
  for (long long j = 1; j <= r; ++j) ansr *= j;
  return ansn / ansr;
}
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
long long lcm(long long a, long long b) { return a / gcd(a, b) * b; }
std::vector<int> Eratosthenes(const int len, int *vis) {
  memset(vis, 0, sizeof(int) * len);
  std::vector<int> prime;
  int m = (int)sqrt(len + 0.5);
  for (int i = (2); i <= (m); ++i)
    if (!vis[i])
      for (int j = i * i; j < len; j += i) vis[j] = 1;
  for (int i = (2); i < (len); ++i)
    if (!vis[i]) prime.push_back(i);
  return prime;
}
void phi_table(int n, int *phi) {
  for (int i = (2); i <= (n); ++i) phi[i] = 0;
  phi[1] = 1;
  for (int i = (2); i <= (n); ++i)
    if (!phi[i])
      for (int j = i; j <= n; j += i) {
        if (!phi[j]) phi[j] = j;
        phi[j] = phi[j] / i * (i - 1);
      }
}
const int maxn = 3e5 + 10;
char s[maxn], t[maxn], ans[maxn];
int n;
int main() {
  scanf("%s%s", s, t);
  n = strlen(s);
  std::sort(s, s + n);
  std::sort(t, t + n);
  std::reverse(t, t + n);
  int l = 0, r = n - 1, st = 0, tt = 0, tn = n / 2 - 1, sn = (n + 1) / 2 - 1;
  for (int i = (0); i < (n); ++i) {
    if (i & 1) {
      if (t[tt] > s[st])
        ans[l++] = t[tt++];
      else {
        ans[r--] = t[tn--];
      }
    } else {
      if (s[st] < t[tt])
        ans[l++] = s[st++];
      else {
        ans[r--] = s[sn--];
      }
    }
  }
  printf("%s\n", ans);
  return 0;
}
