#include <cstdio> #include <cstring> #include <cmath> #include <iostream> #include <algorithm> using namespace std; const int maxn=1e6+10; char a[maxn],b[maxn]; int c[11],d[11]; int first() { int i,j,k; for(i=9;i>=1;i--) { for(j=1;j<=9;j++) { if(i-j>0&&c[j]&&d[i-j]) { c[j]--; d[i-j]--; break; } if(10+i-j<=9&&c[j]&&d[10+i-j]) { c[j]--; d[10+i-j]--; break; } } if(j<=9)break; } return i; } int find(int x) { int i,j,k,ans=0,t; for(i=0;i<=9;i++) { if(x-i>=0&&c[i]&&d[x-i]) { t=min(c[i],d[x-i]); c[i]-=t; d[x-i]-=t; ans+=t; } if(10+x-i<=9&&c[i]&&d[10+x-i]) { t=min(c[i],d[10+x-i]); c[i]-=t; d[10+x-i]-=t; ans+=t; } } return ans; } int main() { int T,tt=0; scanf("%d",&T); while(T--) { int i,j,k,n,m; scanf("%s%s",a,b); memset(c,0,sizeof(c)); memset(d,0,sizeof(d)); n=strlen(a); for(i=0;i<n;i++) { c[a[i]-'0']++; d[b[i]-'0']++; } int t=first(); printf("Case #%d: %d",++tt,t); if(t==0){printf("\n");continue;}//第一个位置是0,则说明其余位置都将是0 for(i=9;i>=0;i--)//先找可以匹配出大的数。 { m=find(i); for(j=0;j<m;j++) printf("%d",i); } printf("\n"); } return 0; }