//为什么我和样例输出的一模一样但是我的数据点却是错的?
#include <iostream>
#include <stdio.h>
#include <cstring>
#define dx1 cha[1].x+dx[cha[1].dir]
#define dx2 cha[2].x+dx[cha[2].dir]
#define dy1 cha[1].y+dy[cha[1].dir]
#define dy2 cha[2].y+dy[cha[2].dir]
using namespace std;
int dy[5] = {0, 0, 1, 0, -1};
int dx[5] = {0, -1, 0, 1, 0};
bool pd[5000000];
long long tezheng = 0;
struct abc {
int x, y, dir = 1;
} cha[5];
int map[15][15];
int tim = 0;
char x;
int main() {
for (int i = 1; i <= 10 ; i++) {
for (int j = 1; j <= 11; j++) {
x = getchar();
if (x == '*')
map[i][j] = 1;
if (x == 'F') {
cha[1].x = i, cha[1].y = j;
}
if (x == 'C') {
cha[2].x = i, cha[2].y = j;
}
}
}
int sx1 = cha[1].x, sx2 = cha[2].x, sy1 = cha[1].y, sy2 = cha[2].y;
while (1) {
tim++;
if (map[dx1][dy1] || dx1 > 10 || dx1 < 1 || dy1 > 10 || dy1 < 1) {
cha[1].dir += 1;
if (cha[1].dir == 5)
cha[1].dir = 1;
} else if (!map[dx1][dy1]) {
cha[1].x += dx[cha[1].dir];
cha[1].y += dy[cha[1].dir];
}
if (map[dx2][dy2] || dx2 > 10 || dx2 < 1 || dy2 > 10 || dy2 < 1) {
cha[2].dir += 1;
if (cha[2].dir == 5)
cha[2].dir = 1;
} else if (!map[dx2][dy2]) {
cha[2].x += dx[cha[2].dir];
cha[2].y += dy[cha[2].dir];
}
tezheng = cha[1].x + cha[1].y * 10 + cha[2].x * 100 + cha[2].y * 1000 + cha[1].dir * 10000 + cha[2].dir * 40000;
if (!pd[tezheng])
pd[tezheng] = 1;
else if (pd[tezheng]) {
cout << "0";
return 0;
}
if (cha[2].x == cha[1].x && cha[2].y == cha[1].y) {
cout << tim;
return 0;
}
}
}