typedef struct {
int x;
int y;
}C1, F1;
void print(char[12][12]);
int main()
{
C1 C; F1 F;
char map[12][12];
for (int i = 0; i < 12; i++)
for (int j = 0; j < 12; j++)
map[i][j] = '*';
for (int i = 1; i <= 10; i++)
for (int j = 1; j <= 10; j++)
{
cin >> map[i][j];
if (map[i][j] == 'C')
{
C.x = i; C.y = j;
}
if (map[i][j] == 'F')
{
F.x = i; F.y = j;
}
}
int a = 0,b = 0;
int num = 0;
int directionF = 1, directionC = 1;
while ((F.x != C.x) || (F.y != C.y))
{
if (directionF == 1)
{
if (map[F.x-1][F.y] != '*')
{
map[F.x][F.y] = '.';
F.x--;
map[F.x][F.y] = 'F';
a = 0;
}
else
{
directionF = 2;
a++;
goto C;
}
}
else if (directionF == 2)
{
if (map[F.x][F.y+1] != '*')
{
map[F.x][F.y] = '.';
F.y++;
map[F.x][F.y] = 'F';
}
else
{
directionF = 3; a++;
goto C;
}
}
else if (directionF == 3)
{
if (map[F.x+1][F.y] != '*')
{
map[F.x][F.y] = '.';
F.x++;
map[F.x][F.y] = 'F';
}
else
{
directionF = 4; a++;
goto C;
}
}
else if (directionF == 4)
{
if (map[F.x][F.y-1] != '*')
{
map[F.x][F.y] = '.';
F.y--;
map[F.x][F.y] = 'F';
}
else
{
directionF = 1; a++;
goto C;
}
}
if (a == 4)
{
cout << 0; break;
}
C:
num++;
if (directionC == 1)
{
if (map[C.x-1][C.y] != '*')
{
map[C.x][C.y] = '.';
C.x--;
map[C.x][C.y] = 'C';
}
else
{
directionC = 2; b++;
continue;
}
}
else if (directionC == 2)
{
if (map[C.x][C.y+1] != '*')
{
map[C.x][C.y] = '.';
C.y++;
map[C.x][C.y] = 'C';
}
else
{
directionC = 3; b++;
continue;
}
}
else if (directionC == 3)
{
if (map[C.x+1][C.y] != '*')
{
map[C.x][C.y] = '.';
C.x++;
map[C.x][C.y] = 'C';
}
else
{
directionC = 4; b++;
continue;
}
}
else if (directionC == 4)
{
if (map[C.x][C.y-1] != '*')
{
map[C.x][C.y] = '.';
C.y--;
map[C.x][C.y] = 'C';
}
else
{
directionC = 1; b++;
continue;
}
}
if (b == 4)
{
cout << 0; break;
}
}
cout << num;
return 0;
}