#include <bits/stdc++.h>
using namespace std;
;
const int maxn = 300;
const int dx[] = {0, 0, 1, -1}, dy[] = {-1, 1, 0, 0};
const char ori[] = {'L', 'R', 'D', 'U'};
int n, m, ex, ey;
char A[maxn + 10][maxn + 10];
int F[maxn + 10][maxn + 10];
pair<int, int> pre[maxn + 10][maxn + 10];
int gao(pair<int, int> a, pair<int, int> b) {
  for (int i = 0; i < 4; i++)
    if (pair<int, int>(a.first + dx[i], a.second + dy[i]) == b) return i;
}
void test() {}
void testcha() {
  for (int i = 0; i < 10; ++i) {
  }
}
void work2() {}
void work1() { work2(); }
int main() {
  cin >> n >> m;
  work1();
  for (int i = 1; i <= n; i++) {
    cin >> (A[i] + 1);
    for (int j = 1; j <= m; j++)
      if (A[i][j] == 'F') {
        ex = i;
        ey = j;
      }
  }
  int LR = -1, UP = -1;
  queue<pair<int, int> > Q;
  while (!Q.empty()) Q.pop();
  memset(F, -1, sizeof(F));
  test();
  testcha();
  F[1][1] = 0;
  Q.push(pair<int, int>(1, 1));
  while (!Q.empty()) {
    int x = Q.front().first;
    int y = Q.front().second;
    Q.pop();
    for (int i = 0; i < 4; i++) {
      work1();
      int tx = x + dx[i], ty = y + dy[i];
      if (tx < 1 || tx > n || ty < 1 || ty > m) continue;
      if (A[tx][ty] == '*') continue;
      if (F[tx][ty] > F[x][y] + 1 || F[tx][ty] == -1) {
        F[tx][ty] = F[x][y] + 1;
        pre[tx][ty] = pair<int, int>(x, y);
        Q.push(pair<int, int>(tx, ty));
      }
    }
  }
  vector<pair<int, int> > ans;
  ans.clear();
  test();
  testcha();
  while (1) {
    if (ex == 1 && ey == 1) break;
    ans.push_back(pair<int, int>(ex, ey));
    int x = ex;
    ex = pre[x][ey].first;
    ey = pre[x][ey].second;
  }
  work2();
  work1();
  int cX = 1, cY = 1;
  reverse(ans.begin(), ans.end());
  for (int i = 0; i < (int)ans.size(); i++) {
    work2();
    int o = gao(pair<int, int>(cX, cY), ans[i]);
    if (o < 2) {
      if (LR == -1) {
        o ^= 1;
        cout << ori[o] << endl;
        o ^= 1;
        cout.flush();
        int x, y;
        cin >> x >> y;
        if (x == cX && y == cY)
          LR = 0;
        else {
          LR = 1;
          cX = x, cY = y;
          continue;
        }
        cX = x, cY = y;
      }
      o ^= LR;
      cout << ori[o] << endl;
      cout.flush();
      cin >> cX >> cY;
    } else {
      if (UP == -1) {
        o = ((o - 2) ^ 1) + 2;
        cout << ori[o] << endl;
        o = ((o - 2) ^ 1) + 2;
        cout.flush();
        int x, y;
        scanf("%d%d", &x, &y);
        if (x == cX && y == cY)
          UP = 0;
        else {
          UP = 1;
          cX = x, cY = y;
          continue;
        }
        cX = x, cY = y;
      }
      o = ((o - 2) ^ UP) + 2;
      cout << ori[o] << endl;
      cout.flush();
      cin >> cX >> cY;
    }
  }
  return 0;
}
