#include<bits/stdc++.h>
using namespace std;
#define max3(a,b,c) max(max(a,b),c)
#define min3(a,b,c) min(min(a,b),c)
#define PI acos(-1.0)
#define LL long long
#define INF_MAX 2147483647
#define INF_MIN -2147483647
#define MX 1000005
#define MOD 1000000007
int dp[5010][5010];
int way[5010][5010];
int main()
{
//freopen("a.in", "r", stdin);
//freopen("a.out", "w", stdout);
//string s1,s2;
char s1[33],s2[33];
int test,t=1;
//cin>>test;
scanf("%d",&test);
getchar();
while(test--)
{
//getline(cin,s1);
//getline(cin,s2);
gets(s1);
gets(s2);
//scanf("%s",&s1);
//scanf("%s",&s2);
// int len1=s1.length();
//int len2=s2.length();
int len1=strlen(s1);
int len2=strlen(s2);
memset(dp,0,sizeof(dp));
memset(way,0,sizeof(way));
for (int i = 0; i <= len1; i++) way[i][0] = 1;
for (int j = 0; j <= len2; j++) way[0][j] = 1;
for(int i=1; i<=len1; i++)
{
for(int j=1; j<=len2; j++)
{
if(s1[i-1]==s2[j-1])
{
dp[i][j]=dp[i-1][j-1]+1;
way[i][j]=way[i-1][j-1];
}
else
{
dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
way[i][j]=0;
if(dp[i][j]==dp[i-1][j])
{
way[i][j]+=way[i-1][j];
}
if(dp[i][j]==dp[i][j-1])
{
way[i][j]+=way[i][j-1];
}
}
}
}
// cout<<dp[len1][len2]<<endl;
printf("Case #%d: %d %d\n",t++,(len1+len2)-dp[len1][len2],way[len1][len2]);
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBtYXgzKGEsYixjKSBtYXgobWF4KGEsYiksYykKI2RlZmluZSBtaW4zKGEsYixjKSBtaW4obWluKGEsYiksYykKI2RlZmluZSBQSSBhY29zKC0xLjApCiNkZWZpbmUgTEwgbG9uZyBsb25nCiNkZWZpbmUgSU5GX01BWCAyMTQ3NDgzNjQ3CiNkZWZpbmUgSU5GX01JTiAtMjE0NzQ4MzY0NwojZGVmaW5lIE1YIDEwMDAwMDUKI2RlZmluZSBNT0QgMTAwMDAwMDAwNwppbnQgZHBbNTAxMF1bNTAxMF07CmludCB3YXlbNTAxMF1bNTAxMF07CmludCBtYWluKCkKewogICAgLy9mcmVvcGVuKCJhLmluIiwgInIiLCBzdGRpbik7CiAgICAvL2ZyZW9wZW4oImEub3V0IiwgInciLCBzdGRvdXQpOwogICAgLy9zdHJpbmcgczEsczI7CiAgICBjaGFyIHMxWzMzXSxzMlszM107CiAgICBpbnQgdGVzdCx0PTE7CiAgICAvL2Npbj4+dGVzdDsKICAgIHNjYW5mKCIlZCIsJnRlc3QpOwogICAgZ2V0Y2hhcigpOwogICAgd2hpbGUodGVzdC0tKQogICAgewogICAgICAgIC8vZ2V0bGluZShjaW4sczEpOwogICAgICAgIC8vZ2V0bGluZShjaW4sczIpOwogICAgICAgIGdldHMoczEpOwogICAgICAgIGdldHMoczIpOwogICAgICAgIC8vc2NhbmYoIiVzIiwmczEpOwogICAgICAgIC8vc2NhbmYoIiVzIiwmczIpOwogICAgICAgLy8gaW50IGxlbjE9czEubGVuZ3RoKCk7CiAgICAgICAgLy9pbnQgbGVuMj1zMi5sZW5ndGgoKTsKICAgICAgICBpbnQgbGVuMT1zdHJsZW4oczEpOwogICAgICAgIGludCBsZW4yPXN0cmxlbihzMik7CiAgICAgICAgbWVtc2V0KGRwLDAsc2l6ZW9mKGRwKSk7CiAgICAgICAgbWVtc2V0KHdheSwwLHNpemVvZih3YXkpKTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBsZW4xOyBpKyspICB3YXlbaV1bMF0gPSAxOwogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDw9IGxlbjI7IGorKykgd2F5WzBdW2pdID0gMTsKICAgICAgICBmb3IoaW50IGk9MTsgaTw9bGVuMTsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgZm9yKGludCBqPTE7IGo8PWxlbjI7IGorKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYoczFbaS0xXT09czJbai0xXSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBkcFtpXVtqXT1kcFtpLTFdW2otMV0rMTsKICAgICAgICAgICAgICAgICAgICB3YXlbaV1bal09d2F5W2ktMV1bai0xXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBkcFtpXVtqXT1tYXgoZHBbaS0xXVtqXSxkcFtpXVtqLTFdKTsKICAgICAgICAgICAgICAgICAgICB3YXlbaV1bal09MDsKICAgICAgICAgICAgICAgICAgICBpZihkcFtpXVtqXT09ZHBbaS0xXVtqXSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdheVtpXVtqXSs9d2F5W2ktMV1bal07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmKGRwW2ldW2pdPT1kcFtpXVtqLTFdKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgd2F5W2ldW2pdKz13YXlbaV1bai0xXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gY291dDw8ZHBbbGVuMV1bbGVuMl08PGVuZGw7CiAgICAgICAgcHJpbnRmKCJDYXNlICMlZDogJWQgJWRcbiIsdCsrLChsZW4xK2xlbjIpLWRwW2xlbjFdW2xlbjJdLHdheVtsZW4xXVtsZW4yXSk7CiAgICB9Cn0KCgo=