#include <bits/stdc++.h>
using namespace std;
const long long linf = 1e18;
const double eps = 1e-12;
const double pi = acos(-1);
template <typename T>
istream& operator>>(istream& is, vector<T>& vec) {
  for (auto&& x : vec) is >> x;
  return is;
}
template <typename T>
ostream& operator<<(ostream& os, const vector<T>& vec) {
  for (long long i = (0), __last_i = (vec.size()); i < __last_i; i++) {
    if (i) os << " ";
    os << vec[i];
  }
  return os;
}
template <typename T>
ostream& operator<<(ostream& os, const vector<vector<T> >& vec) {
  for (long long i = (0), __last_i = (vec.size()); i < __last_i; i++) {
    if (i) os << endl;
    os << vec[i];
  }
  return os;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  string s1, s2;
  cin >> s1 >> s2;
  const long long n = s1.size();
  sort((s1).begin(), (s1).end());
  sort((s2).begin(), (s2).end(), greater<char>());
  const long long n1 = (n + 1) / 2, n2 = n / 2;
  string ans = string(n, '?');
  long long p1l = 0, p1r = n1 - 1;
  long long p2l = 0, p2r = n2 - 1;
  long long l = 0, r = n - 1;
  for (long long i = (0), __last_i = (n); i < __last_i; i++) {
    if (i % 2 == 0) {
      if (s1[p1l] < s2[p2l]) {
        ans[l++] = s1[p1l++];
      } else {
        ans[r--] = s1[p1r--];
      }
    } else {
      if (s1[p1l] < s2[p2l]) {
        ans[l++] = s2[p2l++];
      } else {
        ans[r--] = s2[p2r--];
      }
    }
  }
  cout << ans << endl;
}
