#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const double PI = acos(-1.0);
const int N = 111;
char f[N][N];
int n, m;
int hori = 0, vert = 0;
bool ok(int i, int j) {
  if (i <= 0 or i > n) return true;
  if (j <= 0 or j > m) return true;
  return (f[i - 1][j - 1] != '*');
}
char moveh(char c) {
  if (hori == 1) return c;
  if (c == 'R') return 'L';
  return 'R';
}
char movev(char c) {
  if (vert == 1) return c;
  if (c == 'U') return 'D';
  return 'U';
}
bool vis[N][N];
pair<int, int> pai[N][N];
int dir[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
int ii, jj;
bool pode(int i, int j) { return (i > 0 and j > 0 and i <= n and j <= m); }
void go(int i, int j) {
  vis[i][j] = 1;
  for (int k = 0; k < 4; k++) {
    int ii = i + dir[k][0], jj = j + dir[k][1];
    if (pode(ii, jj) and !vis[ii][jj] and f[ii - 1][jj - 1] != '*') {
      pai[ii][jj] = make_pair(i, j);
      go(ii, jj);
    }
  }
}
int main(void) {
  ios_base::sync_with_stdio(false);
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    cin >> f[i];
    for (int j = 0; j < m; j++)
      if (f[i][j] == 'F') {
        ii = i;
        jj = j;
      }
  }
  cout.flush();
  ii++;
  jj++;
  int i = 1, j = 1;
  if (n == 1) {
    for (int k = 0; k < m; k++) {
      cout << 'L' << endl;
      cout.flush();
      cin >> i >> j;
      if (i == ii and j == jj) return 0;
    }
    for (int k = 0; k < m; k++) {
      cout << 'R' << endl;
      cout.flush();
      cin >> i >> j;
      if (i == ii and j == jj) return 0;
    }
  }
  if (m == 1) {
    for (int k = 0; k < n; k++) {
      cout << 'D' << endl;
      cout.flush();
      cin >> i >> j;
      if (i == ii and j == jj) return 0;
    }
    for (int k = 0; k < n; k++) {
      cout << 'U' << endl;
      cout.flush();
      cin >> i >> j;
      if (i == ii and j == jj) return 0;
    }
  }
  if (ok(1, 0) and ok(1, 2)) {
    cout << 'R' << endl;
    cout.flush();
    cin >> i >> j;
    if (i == ii and j == jj) return 0;
    if (j == 1)
      hori = -1;
    else {
      hori = 1;
      cout << 'L' << endl;
      cout.flush();
      cin >> i >> j;
    }
    while (!ok(i - 1, j) or !ok(i + 1, j)) {
      cout << moveh('R') << endl;
      cout.flush();
      cin >> i >> j;
      if (i == ii and j == jj) return 0;
    }
    cout << 'D' << endl;
    cout.flush();
    cin >> i >> j;
    if (i == ii and j == jj) return 0;
    if (i == 1)
      vert = -1;
    else
      vert = 1;
  } else if (ok(0, 1) and ok(2, 1)) {
    cout << 'D' << endl;
    cout.flush();
    cin >> i >> j;
    if (i == ii and j == jj) return 0;
    if (i == 1)
      vert = -1;
    else {
      vert = 1;
      cout << 'U' << endl;
      cout.flush();
      cin >> i >> j;
    }
    while (!ok(i, j - 1) or !ok(i, j + 1)) {
      cout << movev('D') << endl;
      cout.flush();
      cin >> i >> j;
      if (i == ii and j == jj) return 0;
    }
    cout << 'R' << endl;
    cout.flush();
    cin >> i >> j;
    if (i == ii and j == jj) return 0;
    if (j == 1)
      hori = -1;
    else
      hori = 1;
  }
  go(i, j);
  vector<pair<int, int> > path;
  pair<int, int> at = make_pair(ii, jj);
  while (at.first != i or at.second != j) {
    pair<int, int> next = pai[at.first][at.second];
    path.push_back(make_pair(at.first - next.first, at.second - next.second));
    at = next;
  }
  reverse(path.begin(), path.end());
  for (int i = 0; i < (int)path.size(); i++) {
    int a = path[i].first, b = path[i].second;
    if (b == 1) {
      cout << moveh('R') << endl;
      cout.flush();
    } else if (b == -1) {
      cout << moveh('L') << endl;
      cout.flush();
    } else if (a == 1) {
      cout << movev('D') << endl;
      cout.flush();
    } else {
      cout << movev('U') << endl;
      cout.flush();
    }
    cout.flush();
    cin >> a >> b;
  }
  return 0;
}
