#include <stdio.h>
#include <string.h>
#include <math.h>
#define EPS 1000
int main(void)
{
char map[12][12]={{'0'}}; //一张地图
int i,j;
for( i = 0; i < 12; i++) {map[i][0] = '*';map[i][11] = '*';}
for( j = 1; j < 12; j++) {map[0][j] = '*';map[11][j] = '*';}//边框上铺障碍物
struct posion
{
int x,y;
};
struct posion F,C;//坐标结构体
for( i = 1; i <= 10; i++) {
for( j = 1; j <= 10; j++) {
scanf("%c",&map[i][j]);
if(map[i][j] == 'F'){ F.x = i;F.y = j;}
if(map[i][j] == 'C'){C.x = i;C.y = j;}//输入坐标
}
getchar();//吞回车,不用的话输入就有问题。。
}
//printf("F(%d,%d)\tC(%d,%d)\n",F.x,F.y,C.x,C.y);
int ans=0;//记录分钟数
int head_F = 0, head_C = 0; //初始方向,北-0,东-1,南-2,西-3
while( ans<=EPS ) { //用一个大数判断是否无法相遇
ans++; //循环开始,分钟数+1
if(head_F == 0) {
if( map[F.x-1][F.y] != '*' ) F.x--;
else head_F = (head_F + 1) % 4;
}
else if(head_F == 1) {
if( map[F.x][F.y+1] != '*' ) F.y++;
else head_F = (head_F + 1) % 4;
}
else if(head_F == 2) {
if( map[F.x+1][F.y] != '*' ) F.x++;
else head_F = (head_F + 1) % 4;
}
else if(head_F == 3) {
if( map[F.x][F.y-1] != '*' ) F.y--;
else head_F = (head_F + 1) % 4;
}
if(head_C == 0) {
if( map[C.x-1][C.y] != '*' ) C.x--;
else head_C = (head_C + 1) % 4;
}
else if(head_C == 1) {
if( map[C.x][C.y+1] != '*' ) C.y++;
else head_C = (head_C + 1) % 4;
}
else if(head_C == 2) {
if( map[C.x+1][C.y] != '*' ) C.x++;
else head_C = (head_C + 1) % 4;
}
else if(head_C == 3) {
if( map[C.x][C.y-1] != '*' ) C.y--;
else head_C = (head_C + 1) % 4;
}
//printf("F(%d,%d)\t方向:%d \t C(%d,%d)\t方向:%d\n",F.x,F.y,head_F,C.x,C.y,head_C);
//上述移动过后(一分钟结束时),如果相遇,跳出循环
if(F.x == C.x && F.y == C.y) break;
}
if(F.x!=C.x || F.y!=C.y) putchar('0');
else printf("%d",ans);
return 0;
}