#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
 
using namespace __gnu_pbds;
using namespace std;
 
typedef unsigned long long int ull;
typedef long double ldb;
typedef long long int ll;
 
#define for01(k,n)  for (ll i=k; i<n; i++)
#define for02(k,n)  for (ll j=k; j<n; j++)
#define for03(k,n)  for (ll k=k; k<n; k++)
#define for11(k,n)  for (ll i=k; i<=n; i++)
#define for12(k,n)  for (ll j=k; j<=n; j++)
#define for13(k,n)  for (ll k=k; k<=n; k++)
 
#define pb push_back
#define mp make_pair
 
#define pf push_front
#define popf pop_front
#define popb pop_back
 
#define vll vector<ll>
#define vint vector<int>
#define mll map<ll,ll>
#define mint map<int,int>
 
#define mll_it map<ll,ll>::iterator
#define mint_it map<int,int>::iterator
 
#define f first
#define s second
#define pp pair <ll, ll>
 
#define lb lower_bound
#define ub upper_bound
 
#define emp empty()
#define beg begin()
#define en end()
#define si size()
#define bk back()
 
#define deci(n)  fixed<<setprecision(n)
 
 
#define p0(a) cout << a << " "
#define p1(a) cout << a << "\n"
 
#define mem(a,n) memset(a, n, sizeof(a)); // n = 0 OR -1 only
 
#define MAX LLONG_MAX
#define MIN LLONG_MIN
#define MOD 1000000007
#define MOD2 998244353
 
#define BOOST ios_base::sync_with_stdio(false); cin.tie(NULL)
 
 
 
// CUSTOM HASH FUNCTION - O(1)
struct custom_hash {
    static uint64_t splitmix64(uint64_t x) {
        // http://xorshift.di.unimi.it/splitmix64.c
        x += 0x9e3779b97f4a7c15;
        x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9;
        x = (x ^ (x >> 27)) * 0x94d049bb133111eb;
        return x ^ (x >> 31);
    }
 
    size_t operator()(uint64_t x) const {
        static const uint64_t FIXED_RANDOM = chrono::steady_clock::now().time_since_epoch().count();
        return splitmix64(x + FIXED_RANDOM);
    }
};
 
 
//gp_hash_table - Open Address Hash Table
 
//gp_hash_table<int, int> table;
 
const int RANDOM = chrono::high_resolution_clock::now().time_since_epoch().count();
struct chash {
    int operator()(int x) const { return x ^ RANDOM; }
};
//gp_hash_table<key, int, chash> table;
 
 
// Indexed Set
typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> indSet;
 
/* FUNCTIONS:
1. The function "find_by_order" returns an iterator to the element at a given position:
2. The function "order_of_key" returns the position of a given element
	-> If the element does not appear in the set, we get the position that the element
	   would have in the set
	-> O(log n)*/

bool isPrime(int n) 
{ 
    // Corner cases 
    if (n <= 1)  return false; 
    if (n <= 3)  return true; 
  
    if (n%2 == 0 || n%3 == 0) return false; 
  
    for (int i=5; i*i<=n; i=i+6) 
        if (n%i == 0 || n%(i+2) == 0) 
           return false; 
  
    return true; 
}

ll solve(ll n)
{
  ll a = MAX;
  for11(1, (ll)sqrt(n))
  {
    ll ans = MAX;
    if(n % i == 0)
      ans = (ll)(log(n/i) / log(10))+1;
    if(ans < a)
    {
      a = ans;
      //p1(i);
    }
  }
  return a;
}
    
int main()
{
  BOOST;
  string  x, y;
  cin >> x >> y;
  string ans = "";
  ll i1 = 0, i2 = 0;
  for01(0, x.length()+y.length())
  {
    if(i%2 == 0)
      ans += x[i1++];
    else
      ans += y[i2++];
  }
  p1(ans);
  
  return 0;
}

Measured memory_bytes: 384