#include <bits/stdc++.h>
using namespace std;
const int MOD(1e9 + 7);
const int MAXN(100011);
void __fpurge(FILE* fp) { fseek(stdin, 0, SEEK_END); }
int n, m, chk_lr = 0, chk_ud = 0;
char field[111][111];
int dx[] = {-1, 1, 0, 0};
int dy[] = {0, 0, -1, 1};
char d[] = {'L', 'R', 'U', 'D'};
inline pair<int, int> normal_op(int first, int second, int op) {
  int nx = first + dx[op], ny = second + dy[op];
  if (nx < 1 || nx > m || ny < 1 || ny > n)
    return {first, second};
  else
    return {nx, ny};
}
inline bool is_flipped(int first, int second, int op, pair<int, int> got) {
  return normal_op(first, second, op) != got;
}
inline bool safe_lr(int first, int second) {
  int lx, ly, rx, ry;
  tie(lx, ly) = normal_op(first, second, 0);
  tie(rx, ry) = normal_op(first, second, 1);
  if (field[ly][lx] == '*') return false;
  if (field[ry][rx] == '*') return false;
  return true;
}
inline bool safe_ud(int first, int second) {
  int lx, ly, rx, ry;
  tie(lx, ly) = normal_op(first, second, 2);
  tie(rx, ry) = normal_op(first, second, 3);
  if (field[ly][lx] == '*') return false;
  if (field[ry][rx] == '*') return false;
  return true;
}
inline pair<int, int> send_command(char command) {
  printf("%c\n", command);
  fflush(stdout);
  pair<int, int> ret;
  scanf("%d%d", &ret.second, &ret.first);
  if (field[ret.second][ret.first] == 'F') exit(0);
  return ret;
}
void solve_map(int sx, int sy) {
  int vis[111][111] = {};
  memset(vis, -1, sizeof vis);
  queue<pair<int, int> > q;
  vis[sy][sx] = -2;
  q.emplace(sx, sy);
  int ex, ey;
  while (!q.empty()) {
    pair<int, int> now = q.front();
    q.pop();
    if (field[now.second][now.first] == 'F') {
      tie(ex, ey) = now;
      break;
    }
    for (int i = 0; i < 4; i++) {
      pair<int, int> nxt = normal_op(now.first, now.second, i);
      if (field[nxt.second][nxt.first] == '*') continue;
      if (vis[nxt.second][nxt.first] != -1) continue;
      vis[nxt.second][nxt.first] = i ^ 1;
      q.emplace(nxt);
    }
  }
  pair<int, int> now = pair<int, int>(ex, ey);
  vector<char> cmd_seq;
  while (vis[now.second][now.first] != -2) {
    cmd_seq.emplace_back(d[vis[now.second][now.first] ^ 1]);
    pair<int, int> nxt = now;
    nxt.first += dx[vis[now.second][now.first]];
    nxt.second += dy[vis[now.second][now.first]];
    now = nxt;
  }
  reverse((cmd_seq).begin(), (cmd_seq).end());
  static char drainage[1024];
  for (auto& first : cmd_seq) {
    printf("%c\n", first), fflush(stdout);
    gets(drainage);
  }
  exit(0);
}
void check_ud(int cx, int cy) {
  if (chk_ud) return;
  chk_ud = 1;
  const pair<int, int> nxt = send_command(d[2]);
  int inv = 3;
  if (is_flipped(cx, cy, 2, nxt)) {
    swap(d[2], d[3]);
    inv = 2;
  }
  if (nxt != pair<int, int>(cx, cy)) {
    send_command(d[inv]);
  }
}
void check_lr(int cx, int cy) {
  if (chk_lr) return;
  chk_lr = 1;
  const pair<int, int> nxt = send_command(d[0]);
  int inv = 1;
  if (is_flipped(cx, cy, 0, nxt)) {
    swap(d[0], d[1]);
    inv = 0;
  }
  if (nxt != pair<int, int>(cx, cy)) {
    send_command(d[inv]);
  }
}
bool vis[111][111] = {};
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++) {
    scanf("%s", field[i] + 1);
  }
  int cx = 1, cy = 1;
  for (;;) {
    vis[cy][cx] = true;
    if (field[cy][cx] == 'F') break;
    if (!chk_ud) {
      int udud = safe_ud(cx, cy);
      if (udud) check_ud(cx, cy);
    }
    if (!chk_lr) {
      int lrlr = safe_lr(cx, cy);
      if (lrlr) check_lr(cx, cy);
    }
    if (chk_ud && !chk_lr) {
      pair<int, int> n1 = normal_op(cx, cy, 2);
      pair<int, int> n2 = normal_op(cx, cy, 3);
      if (!vis[n1.second][n1.first]) {
        tie(cx, cy) = send_command(d[2]);
      } else if (!vis[n2.second][n2.first]) {
        tie(cx, cy) = send_command(d[3]);
      }
    } else if (chk_lr && !chk_ud) {
      pair<int, int> n1 = normal_op(cx, cy, 0);
      pair<int, int> n2 = normal_op(cx, cy, 1);
      if (!vis[n1.second][n1.first]) {
        tie(cx, cy) = send_command(d[0]);
      } else if (!vis[n2.second][n2.first]) {
        tie(cx, cy) = send_command(d[1]);
      }
    } else if (chk_lr && chk_ud) {
      solve_map(cx, cy);
      break;
    }
  }
  fflush(stdout);
  return 0;
}
