using System;
using System.Runtime.CompilerServices;

class sudarBrojeva
{
    static int brojCifara(int n)
    {
        int br = 0;
        while (n > 0)
        {
            br++;
            n /= 10;
        }
        return br;
    }
    static int max(int a, int b)
    {
        if (a > b) return a;
        else return b;
    }
    static void Main()
    {
        int a = int.Parse(Console.ReadLine());
        int b = int.Parse(Console.ReadLine());
        int maks = max(brojCifara(a), brojCifara(b));
        int i = 0;
        int[] n = new int[maks];
        int[] m = new int[maks];
        int x = a;
        int y = b;
        int j = 0;
        for (i = brojCifara(a) - 1; i >= 0; i--)
        {
            n[i] = x % 10;
            x /= 10;
        }
        for (i = brojCifara(b) - 1; i >= 0; i--)
        {
            m[i] = y % 10;
            y /= 10;
        }
        if (brojCifara(a) > brojCifara(b))
        {
            for (i = 0; i < brojCifara(a) - brojCifara(b); i++)
            {
                Console.Write("{0}", n[i]);
            }

            for (j = 0; j < brojCifara(b); j++)
            {
                if (n[j + i] > m[j]) Console.Write(n[j + i]);
                else if (n[j + i] < m[j]) Console.Write(m[j]);
                else Console.Write("{0}{1}",n[j + i], m[j]);
            }
            
        }
        else
        {
            for (i = 0; i < brojCifara(b) - brojCifara(a); i++)
            {
                Console.Write("{0}", m[i]);
            }
            for (j = 0; j < brojCifara(a); j++)
            {
                if (m[j + i] > n[j]) Console.Write(m[j + i]);
                else if (m[j + i] < n[j]) Console.Write(n[j]);
                else Console.Write("{0}{1}", m[j + i], n[j]);
            }
        }
    }
}