#include <iostream>
#include <vector>
#include <limits>
#include <string>
using namespace std;

void discombobulate(vector<int>& Vect, string Number, int Filler)
{
    for (int i = 0; i < Number.length() + abs(Filler); i++)
    {
        if (i >= Number.length()) {
            Vect.push_back(-1);
            continue;
        }
        int base = Number[i] - '0';
        int power = (pow(10, Number.length() - i - 1));
        Vect.insert(Vect.begin(), base * power);
    }
}

void gothrough(vector<int>& xmem, vector<int>& ymem, string& returnstr, vector<int>::iterator itx, vector<int>::iterator ity)
{
    if (itx == xmem.end() && ity == ymem.end()) return;
    string addstr;
    if (*itx != *ity) addstr = to_string(max(*itx, *ity))[0] + returnstr;
    else addstr = to_string(*itx).substr(0, 1) + to_string(*ity).substr(0, 1) + returnstr;
    returnstr = addstr;
    return gothrough(xmem, ymem, returnstr, ++itx, ++ity);
}

int main()
{
    int x, y;
    cin >> x >> y;
    vector<int> xmem;
    vector<int> ymem;
    int xadd = max((int)to_string(y).length() - (int)to_string(x).length(), 0);
    int yadd = max((int)to_string(x).length() - (int)to_string(y).length(), 0);
    discombobulate(xmem, to_string(x), xadd);
    discombobulate(ymem, to_string(y), yadd);
    // (uint32_t)-15 - numeric_limits<uint32_t>::max() + 14;

    string returnstr = "";

    gothrough(xmem, ymem, returnstr, xmem.begin(), ymem.begin());

    cout << returnstr << endl;
    
}