#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const long long MAX_N = 3e5 + 10;
const long long mod = 1e9 + 7;
const double PI = acos(-1);
char mp[110][110];
bool flag1 = false, flag2 = false;
bool check1 = false, check2 = false;
int from[110][110];
int dx[4] = {0, 1, 0, -1};
int dy[4] = {1, 0, -1, 0};
int ex, ey;
int n, m;
int gx, gy;
struct point {
  int x, y;
};
void bfs() {
  queue<point> que;
  point now, to;
  now.x = 1;
  now.y = 1;
  from[1][1] = 0;
  que.push(now);
  while (que.size()) {
    now = que.front();
    que.pop();
    if (now.x == ex && now.y == ey) return;
    for (int i = 0; i <= 3; ++i) {
      to.x = now.x + dx[i];
      to.y = now.y + dy[i];
      if (from[to.x][to.y] == INF && mp[to.x][to.y] != '*' && to.x > 0 &&
          to.x <= n && to.y > 0 && to.y <= m) {
        from[to.x][to.y] = i;
        que.push(to);
      }
    }
  }
}
void dfs(int x, int y, int from_x, int from_y) {
  if (x != 1 || y != 1) dfs(x - dx[from[x][y]], y - dy[from[x][y]], x, y);
  if (from[from_x][from_y] & 1) {
    if (!check1) {
      printf("%c\n", "DU"[from[from_x][from_y] == 3]);
      fflush(stdout);
      scanf("%d%d", &gx, &gy);
      if (gx == from_x && gy == from_y)
        flag1 = true;
      else {
        printf("%c\n", "UD"[from[from_x][from_y] == 3]);
        fflush(stdout);
        scanf("%d%d", &gx, &gy);
      }
      check1 = true;
    } else {
      if (flag1)
        printf("%c\n", "DU"[from[from_x][from_y] == 3]);
      else
        printf("%c\n", "UD"[from[from_x][from_y] == 3]);
      fflush(stdout);
      scanf("%d%d", &gx, &gy);
    }
  } else {
    if (!check2) {
      printf("%c\n", "RL"[from[from_x][from_y] / 2]);
      fflush(stdout);
      scanf("%d%d", &gx, &gy);
      if (gx == from_x && gy == from_y)
        flag2 = true;
      else {
        printf("%c\n", "LR"[from[from_x][from_y] / 2]);
        fflush(stdout);
        scanf("%d%d", &gx, &gy);
      }
      check2 = true;
    } else {
      if (flag2)
        printf("%c\n", "RL"[from[from_x][from_y] / 2]);
      else
        printf("%c\n", "LR"[from[from_x][from_y] / 2]);
      fflush(stdout);
      scanf("%d%d", &gx, &gy);
    }
  }
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; ++i) scanf("%s", mp[i] + 1);
  memset(from, INF, sizeof(from));
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= m; ++j)
      if (mp[i][j] == 'F') {
        ex = i;
        ey = j;
      }
  bfs();
  dfs(ex - dx[from[ex][ey]], ey - dy[from[ex][ey]], ex, ey);
  return 0;
}
