#include <iostream>
using namespace std;
#define ulong unsigned long long

int a;
int b;
ulong rmin =0;
ulong rmax =0;
void analyze(){
    // aa
    int al = 1;
    int tt = a;
    while(tt >= 10){
        tt/=10;
        al++;
    }
    int* aa=new int[al];
    tt = a;
    for(int i =al-1; i >= 0; i--){
        aa[i] = tt%10;
        tt/=10;
    }
    // bb
    int bl = 1;
    tt = b;
    while(tt>=10){
        tt = tt/10;
        bl++;
    }
    int* bb=new int[bl];
    tt = b;
    for(int i =bl-1; i >= 0; i--){
        bb[i] = tt%10;
        tt/=10;
    }
    int ta,tb;
    int pan = 0;
    int pbn = 0;
    int pam = 0;
    int pbm = 0;
    for(int i = 0; i < al+bl; i++){
        // rmin
        if(pan>=al)ta=10;
        else ta=aa[pan];
        if(pbn>=bl)tb=10;
        else tb=bb[pbn];
        if(ta<tb){
            rmin=rmin*10+ta;
            pan++;
        }else{
            rmin=rmin*10+tb;
            pbn++;
        }
        // rmax
        if(pam>=al)ta=0;
        else ta=aa[pam];
        if(pbm>=bl)tb=0;
        else tb=bb[pbm];
        if(ta>tb){
            rmax=rmax*10+ta;
            pam++;
        }else{
            rmax=rmax*10+tb;
            pbm++;
        }
    }
}

int main()
{
   cin >> a >> b;
   analyze();
   cout << rmin << endl << rmax<<endl;
   return 0;
}