#include<iostream>
#include<cstdio>
#include<cstring>
#define int unsigned long long
using namespace std;
int f[1135][1135];
int g[1135][1135];
void solve(int T){
memset(f,-1,sizeof(f));
memset(g,-1,sizeof(g));
string s1,s2;
cin>>s1>>s2;
int t1=s1.size();
int t2=s2.size();
s1=' '+s1;
s2=' '+s2;
g[0][0]=1;
f[0][0]=0;
for(int i=1;i<=t1;i++){
f[i][0]=i;
g[i][0]=1;
}
for(int i=1;i<=t2;i++){
f[0][i]=i;
g[0][i]=1;
}
for(int i=1;i<=t1;i++){
for(int j=1;j<=t2;j++){
if(s1[i]==s2[j]){
f[i][j]=f[i-1][j-1]+1;
g[i][j]=g[i-1][j-1];
}
else{
if(f[i][j-1]==f[i-1][j]){
g[i][j]=g[i-1][j]+g[i][j-1];
f[i][j]=f[i-1][j]+1;
}
else if(f[i][j-1]>f[i-1][j]){
f[i][j]=f[i-1][j]+1;
g[i][j]=g[i-1][j];
}
else{
f[i][j]=f[i][j-1]+1;
g[i][j]=g[i][j-1];
}
}
}
}
cout<<"Case #"<<T<<": "<<f[t1][t2]<<' '<<g[t1][t2]<<endl;
return;
}
int T;
signed main(){
cin>>T;
for(int i=1;i<=T;i++) solve(i);
return 0;
}