#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
using namespace std;
const int MAXN = 10;
const int DARK = 1;
const int LIGHT = 2;
const int WALL = 3;
int s[MAXN][MAXN];
int Move[8][2] = { {-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1} };
/*
HDU 3368
关键: 要考虑到特殊情况, 即有两个方向的白棋翻转
*/
int check(int line, int col){
// 检查第l行第c列可以翻转几个白棋
// 顺序: 从上开始, 顺时针转一圈检查
int sum = 0;
for(int i=0; i<8; i++){
int l = line + Move[i][0];
int c = col + Move[i][1];
int cnt = 0;
// cout << l << " " << c << endl;
if( s[l][c]== LIGHT ){
while( s[l][c]==LIGHT ){
cnt++;
l += Move[i][0];
c += Move[i][1];
}
if( s[l][c]==DARK ){
sum += cnt;
}
}
}
return sum;
}
int main(){
int T;
scanf("%d\n", &T);
for(int i=0; i<T; i++){
memset(s,0,sizeof(s));
for(int j=1; j<MAXN-1; j++){
for( int k=1; k<MAXN-1; k++ ){
scanf("%c", &s[j][k]);
if( s[j][k]=='*' ){
s[j][k] = 0;
}else if( s[j][k]=='D' ){
s[j][k] = DARK;
}else{
s[j][k] = LIGHT;
}
}
getchar();
}
for( int j=0; j<MAXN; j++){
s[0][j] = s[9][j] = s[j][9] = s[j][0] = WALL;
}
int maxcnt = 0, cnt = 0;
for(int l=0; l<MAXN; l++){
for( int c=0; c<MAXN; c++ ){
if( s[l][c]==0 ){
cnt = check(l,c);
maxcnt = max(maxcnt, cnt);
}
// cout << s[l][c] << " ";
}
// cout << endl;
}
cout << "Case " << i+1 << ": " << maxcnt << endl;
getchar();
}
return 0;
}
/* key
********
*D***D**
**L*L***
********
**L*L***
*D***D**
********
********
*/