#include <bits/stdc++.h>
using namespace std;
int n, m, r, c, nr, nc;
string grid[111];
char U, D, L, R;
void go(char cc) {
  cout << cc << endl;
  cout.flush();
  cin >> nr >> nc;
  nr--;
  nc--;
}
int vst[111][111];
int dr[] = {1, -1, 0, 0}, dc[] = {0, 0, 1, -1};
char prevv[111][111];
int prer[111][111], prec[111][111];
bool valid(int rr, int cc) {
  return rr >= 0 && cc >= 0 && rr < n && cc < m && grid[rr][cc] != '*';
}
void dfs(int rr, int cc) {
  char dir[] = {D, U, R, L};
  vst[rr][cc] = 1;
  for (int dd = (0); dd <= ((int)(4) - 1); dd++) {
    nr = rr + dr[dd];
    nc = cc + dc[dd];
    if (valid(nr, nc) && !vst[nr][nc]) {
      prevv[nr][nc] = dir[dd];
      prer[nr][nc] = rr;
      prec[nr][nc] = cc;
      dfs(nr, nc);
    }
  }
}
vector<char> ret;
int main() {
  cin >> n >> m;
  for (int i = (0); i <= ((int)(n)-1); i++) cin >> grid[i];
  U = 'U';
  D = 'D';
  L = 'L';
  R = 'R';
  r = c = 0;
  if (grid[0][1] == '.') {
    go(R);
    if (nc == c) swap(L, R);
    go(L);
    while (grid[r + 1][c] == '*') {
      go(R);
      c = nc;
    }
    go(D);
    if (nr == r) swap(U, D);
    go(U);
  } else {
    go(D);
    if (nr == r) swap(U, D);
    go(U);
    while (grid[r][c + 1] == '*') {
      go(D);
      r = nr;
    }
    go(R);
    if (nc == c) swap(L, R);
    go(L);
  }
  dfs(r, c);
  for (int i = (0); i <= ((int)(n)-1); i++)
    for (int j = (0); j <= ((int)(m)-1); j++)
      if (grid[i][j] == 'F') nr = i, nc = j;
  while (!(nr == r && nc == c)) {
    ret.push_back(prevv[nr][nc]);
    int tmpr = prer[nr][nc];
    int tmpc = prec[nr][nc];
    nr = tmpr;
    nc = tmpc;
  }
  reverse(ret.begin(), ret.end());
  for (char cc : ret) go(cc);
}
