#include <iostream>
#include <vector>
#include<cstdio>
#include <string>
#include<iomanip>
#define NUM 15
using namespace std;
int dx[]={0,1,0,-1}; //朝向数组
int dy[]={1,0,-1,0};
char map[NUM][NUM]; //地图数组
int cnt=0,flagf=0,flagc=0; //cnt:分钟数,flagf:F 的朝向,flagc:C 的朝向
int zip(int xf,int yf,int xc,int yc){
if(xf==xc&&yf==yc)return cnt; //如果位置重复就返回
cnt++;
if(flagf==4)flagf=0; //这个就是相当于取模
if(flagc==4)flagc=0;
int nxf=xf+dx[flagf]; //F向前走一步后的坐标
int nyf=yf+dy[flagf];
int nxc=xc+dx[flagc]; //C向前走一步后的坐标
int nyc=yc+dx[flagc];
if(map[nxc][nyc]=='*'){ //C如果撞墙,转弯,再向后退一步
flagc++;
nxc=xc;
nyc=yc;
}
if(map[nxf][nyf]=='*'){ //F如果撞墙,转弯,再向后退一步
flagf++;
nxf=xf;
nyf=yf;
}
if(cnt>123132){ //如果分钟数太大
return 0;
}
else{
return zip(nxf,nyf,nxc,nyc); //递归
}
}
int main(){
for(int i=0;i<=12;i++){ //先将整张图变成墙
for(int j=0;j<=12;j++){
map[i][j]='*';
}
}
int xf,yf,xc,yc;
for(int i=1;i<=10;i++){
for(int j=1;j<=10;j++){
cin>>map[i][j];
if(map[i][j]=='F'){ //记录下F的初始位置
xf=i;
yf=j;
}
if(map[i][j]=='C'){ //记录下C的初始位置
xc=i;
yc=j;
}
}
}
cout<<zip(xf,yf,xc,yc);
}