#include<iostream>
#include<algorithm>
#include<cstring>
#include<math.h>
#include<iomanip>
using namespace std;
char m[12][12];
int c[3], f[3], ans, tdz; //f[0]和c[0]用来存方向
bool zt[160005];
void move(int x, int y, int mi, int h) { //x,y为x,y坐标,mi为方向,h为类型:农夫为0,奶牛为1
if (mi == 0) { //初始向北
if (m[x - 1][y] == '*') if (h == 0) f[0] = 1; else c[0] = 1;
else if (h == 0) f[1]--;
else c[1]--;
}
else if (mi == 1) { //东
if (m[x][y + 1] == '*') if (h == 0) f[0] = 2; else c[0] = 2;
else if (h == 0) f[2]++;
else c[2]++;
}
else if (mi == 2) { //南
if (m[x + 1][y] == '*') if (h == 0) f[0] = 3; else c[0] = 3;
else if (h == 0) f[1]++;
else c[1]++;
}
else if (mi == 3) { //西
if (m[x][y - 1] == '*') if (h == 0) f[0] = 0; else c[0] = 0;
else if (h == 0) f[2]--;
else c[2]--;
}
}
bool pd() { //判断循环终止条件:如果奶牛坐标与农夫坐标相等,则他们重叠,返回0,退出循环
if (f[1] == c[1] && f[2] == c[2]) return 0;
else return 1;
}
int main(){
for (int i = 0; i <= 11; i++) m[i][0] = '*', m[i][11] = '*';
for (int i = 1; i <= 11; i++) m[0][i] = '*', m[11][i] = '*';
for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= 10; j++) {
cin >> m[i][j];
if (m[i][j] == 'C') {
c[1] = i;
c[2] = j;
}
if (m[i][j] == 'F') {
f[1]= i;
f[2] = j;
}
}
}
while (pd()) {//模拟每秒
tdz = f[1] + f[2] * 10 + c[1] * 100 + c[2] * 1000 + f[0] * 10000 + c[0] * 40000; //依旧不知道为啥这样就不重复了,就能判断是否两次同一方向经过同一地点
if (zt[tdz]) {//死循环了就输出0并结束程序
cout << 0 << endl;
return 0;
}
zt[tdz] = 1;//标记
move(f[1], f[2], f[0], 0);
move(c[1], c[2], c[0], 1);//依次移动农夫和奶牛
ans++;//记录秒数
}
cout << ans << endl;//输出
return 0;
}