#include<iostream>
#include<cstring>
#include<set>
using namespace std;
const int GRID_NUM = 10;
int dx[4] = {-1, 0, 1, 0};
int dy[4] = {0, 1, 0, -1};
int north = 0;
int east = 1;
int south = 2;
int west = 3;
int getNextDirection(int prev) {
if (prev == north) {
return east;
} else if (prev == east) {
return south;
} else if (prev == south) {
return west;
} else {
return north;
}
}
int main() {
char forest[GRID_NUM][GRID_NUM];
set<int> forestCowSet[GRID_NUM][GRID_NUM];
set<int> forestFarmerSet[GRID_NUM][GRID_NUM];
for (int i = 0; i < GRID_NUM; i++) {
cin >> forest[i];
}
int cowX, cowY, farmerX, farmerY;
for (int i = 0; i < GRID_NUM; i++) {
for (int j = 0; j < GRID_NUM; j++) {
if (forest[i][j] == 'C') {
cowX = i;
cowY = j;
}
if (forest[i][j] == 'F') {
farmerX = i;
farmerY = j;
}
}
}
int cowDirection = north;
int farmerDirection = north;
int count = 0;
while (true) {
if (cowX == farmerX && cowY == farmerY) {
cout << count;
break;
}
if (forestCowSet[cowX][cowY].find(cowDirection) != forestCowSet[cowX][cowY].end()
&& forestFarmerSet[farmerX][farmerY].find(farmerDirection) != forestFarmerSet[farmerX][farmerY].end()) {
cout << 0;
break;
}
forestCowSet[cowX][cowY].insert(cowDirection);
forestFarmerSet[farmerX][farmerY].insert(farmerDirection);
int newCowX = cowX + dx[cowDirection];
int newCowY = cowY + dy[cowDirection];
if (forest[newCowX][newCowY] == '*'
|| newCowY >= GRID_NUM
|| newCowY < 0
|| newCowX >= GRID_NUM
|| newCowX < 0) {
cowDirection = getNextDirection(cowDirection);
} else {
cowX = newCowX;
cowY = newCowY;
}
int newFarmerX = farmerX + dx[farmerDirection];
int newFarmerY = farmerY + dy[farmerDirection];
if (forest[newFarmerX][newFarmerY] == '*'
|| newFarmerY >= GRID_NUM
|| newFarmerY < 0
|| newFarmerX >= GRID_NUM
|| newFarmerX < 0) {
farmerDirection = getNextDirection(farmerDirection);
} else {
farmerX = newFarmerX;
farmerY = newFarmerY;
}
count++;
}
return 0;
}