//这题其实不难 我应该早早就写出来
//奈何老是细节上面写不对 dir数组竟然写错了
// 要理清x y 坐标方向变化关系 x是上下动 y是左右动 搞清楚点!!!!!
include[HTML_REMOVED]
using namespace std;
int w,h;
char graph[11][11]; // 字符y表示访问过 n表示没有
bool visited[11][11];
int dir[4][2] = {{0,1},{-1,0},{0,-1},{1,0}};
int main(){
while(cin >> w >> h){
int x,y = 1;
int d; //表示dir方向数组的下标
memset(graph,' ', sizeof(graph));
for(int i = 1; i <= w; i++){
for(int j = 1; j <= h; j++){
cin >> graph[i][j];
if(graph[i][j] != '.' && graph[i][j] != '*')
{
x = i;
y = j;
if(graph[i][j] == 'R' ) d = 0;
else if(graph[i][j] == 'U') d = 1;
else if(graph[i][j] == 'D') d = 3;
else if(graph[i][j] == 'L') d = 2;
}
}
}
memset(visited,false,sizeof(visited)); //初始化
int step = 1;
visited[x][y] = true;
bool flag = false; //表示是否已经改变方向过
while(1){
x += dir[d][0]; //试着改变x,y值
y += dir[d][1];
//如果此时满足可以往当前d方向走的条件
if(graph[x][y] == '.' && !visited[x][y] && x >= 1 && x <= w && y >= 1 && y <= h) {
step++; //步数加一
visited[x][y] = true; //标记已经访问过
flag = false; //此时是新的方向
}
else { //不满足则
if(flag) break; //如果此时已经调头过 但仍然是死路 则直接结束循环
x -= dir[d][0]; //若不满足,则x,y的值 回溯成之前的值
y -= dir[d][1];
//改变方向
d = (d - 1 + 4) % 4; //求余数时尽量保持为对正数求余 负数求余不对
flag = true;
}
}
cout << step << endl;
}
}