int arr[ 51 ] [ 51 ] , mark[ 51 ] [ 51 ] , h, w;
int fun( char c, int a, int b)
{ int k, l, q= 0 , Max= 0 ;
for ( k=- 1 ; k<= 1 ; k++ )
for ( l=- 1 ; l<= 1 ; l++ )
{
if ( a+ k>= 0 && a+ k< h && b+ l>= 0 && b+ l< w && ! ( k== 0 && l== 0 ) )
{ if ( arr[ a+ k] [ b+ l] == c+ 1 && ( mark[ a+ k] [ b+ l] == 0 ) ) q= fun( c+ 1 , a+ k, b+ l) ;
else q= c+ 1 - 'A' ;
if ( q> Max) Max= q;
}
}
mark[ a] [ b] = 1 ;
return Max;
} ;
int main( )
{ int allAs[ 2 ] [ 2602 ] ;
int i, j, MAX, n, v, x, y, c= 1 ;
char ch;
while ( ( ! ( h== 0 && w== 0 ) ) )
{ n
= 0 ; i
= h
; while ( i
-- ) memset ( mark
[ i
] , 0 , 4 * w
) ; for ( i= 0 ; i< h; i++ )
{ j= 0 ;
do { if ( ( ch
= getchar ( ) ) == 'A' ) { allAs
[ 0 ] [ n
] = i
; allAs
[ 1 ] [ n
++ ] = j
; }
if ( ch!= '\n ' ) arr[ i] [ j++ ] = ch; } while ( ch!= '\n ' ) ;
}
MAX= 0 ;
i=- 1 ;
while ( i++< n- 1 )
{ v= fun( 'A' , allAs[ 0 ] [ i] , allAs[ 1 ] [ i] ) ;
if ( MAX< v) MAX= v; }
printf ( "\n Case %d: %d" , c
++, MAX
) ;
}
return 0 ;
}
aW50IGFycls1MV1bNTFdLG1hcmtbNTFdWzUxXSxoLHc7CiAgICBpbnQgZnVuKGNoYXIgYywgaW50IGEsIGludCBiKQogICAgICAgICAgIHsgaW50ICAgIGssbCxxPTAsTWF4PTA7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoaz0tMTtrPD0xO2srKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsPS0xO2w8PTE7bCsrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgaWYgKGEraz49MCAmJiBhK2s8aCAmJiBiK2w+PTAgJiYgYitsPHcgICYmICEoaz09MCAmJiBsPT0wKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgCQkJCQkJCQlpZiAoYXJyW2Era11bYitsXT09YysxICYmIChtYXJrW2Era11bYitsXT09MCkpIHE9ZnVuKGMrMSxhK2ssYitsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgcT1jKzEtJ0EnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChxPk1heCkgTWF4PXE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtbYV1bYl09MTsKCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNYXg7CiAgICAgICAgIH07CgppbnQgbWFpbigpCnsgIGludCAgICAgYWxsQXNbMl1bMjYwMl07CiAgICBpbnQgICAgIGksaixNQVgsbix2LHgseSxjPTE7CiAgICBjaGFyIGNoOwogICAgICAgIHNjYW5mKCIlZCVkIiwmaCwmdyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlKCghKGg9PTAgJiYgdz09MCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgIG49MDtpPWg7IHdoaWxlKGktLSkgIG1lbXNldChtYXJrW2ldLDAsNCp3KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGk9MDtpPGg7aSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgaj0wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaT09MCkgICAgICAgIGNoPWdldGNoYXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRveyAgICBpZigoY2g9Z2V0Y2hhcigpKT09J0EnKXthbGxBc1swXVtuXT1pOyBhbGxBc1sxXVtuKytdPWo7fQoKaWYoY2ghPSdcbicpIGFycltpXVtqKytdPWNoOyB9ICAgd2hpbGUoY2ghPSdcbicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BWD0wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaT0tMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlKGkrKzxuLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgIHY9ZnVuKCdBJywgYWxsQXNbMF1baV0sIGFsbEFzWzFdW2ldKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihNQVg8dikgTUFYPXY7ICAgIH0KCnByaW50ZigiXG5DYXNlICVkOiAlZCIsYysrLE1BWCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FuZigiJWQlZCIsJmgsJncpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7Cn0KCgo=