#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
#define int LL
LL power(int base , int expo)
{
    LL ret = 1, to = base;
    while(expo)
    {
        if(expo&1)
            ret = ret * to;
        to = to * to;
        expo/=2;
    }
    return ret;
}



LL dp[66][2];
pair  < int , int > pi[66][2];
LL x[66][2];
LL y[66][2];

LL ret( string A , string B)
{
    LL i , j ,k,l;
    const LL INF = 20000000000000LL;
    for(i=0;i<64;++i)
        for(j=0;j<2;++j)
            x[i][j]= y[i][j]=dp[i][j] =  INF;
    dp[A.length()][1] = 0 ;
    dp[A.length()][0] = 0 ;
    for(i=A.length()-1;i>=0;--i)
        for(j=0;j<2;++j)
        {
            for(k=0;k<10;++k)
                for(l=0;l<=(j?9:k);++l)
                {
                    if(A[i]!='?' && A[i]-'0'!=k)continue;
                    if(B[i]!='?' && B[i]-'0'!=l)continue;

                    if(dp[i][j] > dp[i+1][j ||(k>l)] + (k-l)*power(10,int(A.length())-1-i  ))
                    {
                            dp[i][j] = dp[i+1][j ||(k>l)] + (k-l)*power(10,int(A.length())-1-i  );
                            pi[i][j] = {i+1,j ||(k>l)};
                            x[i][j] = k;
                            y[i][j] = l ;
                    }
                    else if(dp[i][j] == dp[i+1][j ||(k>l)] + (k-l)*power(10,int(A.length())-1-i  ))
                    {
                        string one = "";
                        one+=char(x[i][j]+'0');
                        one += char(y[i][j]+'0');
                        string two ="";
                        two+= char(k+'0');
                        two += char(l+'0');
                        if(two<one)
                        {
                            x[i][j] = k;
                            y[i][j] = l;
                        }
                    }
                }
        }
    return dp[0][0];
}
LL ret2( string A , string B)
{
    LL i , j ,k , l  ;
    const LL INF = 20000000000000LL;
    for(i=0;i<64;++i)
        for(j=0;j<2;++j)
            x[i][j]= y[i][j]=dp[i][j] =  INF;
    dp[A.length()][1] = 0 ;
    dp[A.length()][0] = 0 ;
    for(i=A.length()-1;i>=0;--i)
        for(j=0;j<2;++j)
        {
            for(k=0;k<10;++k)
                for(l=0;l<=(j?9:k);++l)
                    {
                        if(A[i]!='?' && A[i]-'0'!=k)continue;
                        if(B[i]!='?' && B[i]-'0'!=l)continue;
                        if(dp[i][j] > dp[i+1][j ||(k>l)] + (k-l)*power(10,int(A.length())-1-i  ))
                        {
                            dp[i][j] = dp[i+1][j ||(k>l)] + (k-l)*power(10,int(A.length())-1-i  );
                            pi[i][j] = {i+1,j ||(k>l)};
                            x[i][j] = k;
                            y[i][j] = l ;
                        }
                        else if(dp[i][j] == dp[i+1][j ||(k>l)] + (k-l)*power(10,int(A.length())-1-i  ))
                        {
                            string one = "";
                            one+=char(x[i][j]+'0');
                            one += char(y[i][j]+'0');
                            string two ="";
                            two+= char(k+'0');
                            two += char(l+'0');
                            reverse(one.begin(),one.end());
                            reverse(two.begin(),two.end());
                            if(two<one)
                            {
                                x[i][j] = k;
                                y[i][j] = l;
                            }
                        }
                    }
        }
    return dp[0][0];
}


 main()
{
//    freopen("B-small-attempt5.in","r+",stdin);
//    freopen("out3.txt","w+",stdout);
    int T   , i , e , j  ;
    cin>>T;
    for(e=0;e<T;++e)
    {
        int i ;
        cout<<"Case #"<<e+1<<": ";
        string A , B;
        cin>>A>>B;

        LL foo = ret(A,B);
        LL bar= ret2(B,A);

        assert(foo!=20000000000000LL || bar!=20000000000000LL);
        if(foo<=bar)
        {
            ret(A,B);

            i = 0 , j = 0;
            string o1="" , o2 = "";
            for(;i!=A.length();++i)
            {
                o1 = o1  + char(x[i][j]+'0');
                o2 = o2  + char(y[i][j]+'0');
                j = pi[i][j].second;
            }
            reverse(o1.begin(),o1.end());
            reverse(o2.begin(),o2.end());
            while(o1.size()<A.size())o1+='0';
            while(o2.size()<A.size())o1+='0';
            reverse(o1.begin(),o1.end());
            reverse(o2.begin(),o2.end());
            cout<<o1<<" "<<o2<<"\n";
        }
        else
        {

            ret2(B,A);
            i = 0 , j = 0;
            string o1="" , o2 = "";
            for(;i!=A.length();++i)
            {
                o1 = o1  + char(x[i][j]+'0');
                o2 = o2  + char(y[i][j]+'0');
                j = pi[i][j].second;
            }
            reverse(o1.begin(),o1.end());
            reverse(o2.begin(),o2.end());
            while(o1.size()<A.size())o1+='0';
            while(o2.size()<A.size())o1+='0';
            reverse(o1.begin(),o1.end());
            reverse(o2.begin(),o2.end());
            cout<<o2<<" "<<o1<<"\n";
        }
    }
    return 0;
}
