#include <bits/stdc++.h>
using namespace std;
const int INF = 1000000001;
const long double EPS = 1e-9;
const int MOD = 1000000007;
const long long LLINF = 1000000000000000001;
const int maxn = 142;
char ff[maxn][maxn];
int dirto[maxn][maxn];
int n, m;
int px, py;
int dirx[4] = {0, 1, 0, -1};
int diry[4] = {1, 0, -1, 0};
char dirl[4] = {'R', 'U', 'L', 'D'};
void move(int dir) {
  cout << dirl[dir] << endl;
  int newx, newy;
  cin >> newx >> newy;
  if (newx == px && newy == py) {
    swap(dirl[dir], dirl[(dir + 2) % 4]);
    cout << dirl[dir] << endl;
    cin >> newx >> newy;
  }
  px = newx;
  py = newy;
}
void dfs(int x, int y) {
  for (int i = 0; i <= 3; i++) {
    if (ff[x + dirx[i]][y + diry[i]] != '*' &&
        dirto[x + dirx[i]][y + diry[i]] == -2) {
      dirto[x + dirx[i]][y + diry[i]] = i;
      dfs(x + dirx[i], y + diry[i]);
    }
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin >> n >> m;
  int fx, fy;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) {
      cin >> ff[i][j];
      dirto[i][j] = -2;
      if (ff[i][j] == 'F') {
        fx = i;
        fy = j;
      }
    }
  for (int i = 0; i <= m + 1; i++) {
    ff[0][i] = '*';
    ff[n + 1][i] = '*';
  }
  for (int i = 0; i <= n + 1; i++) {
    ff[i][0] = '*';
    ff[i][m + 1] = '*';
  }
  dirto[1][1] = -1;
  dfs(1, 1);
  vector<int> ans;
  while (fx != 1 || fy != 1) {
    int nextdir = dirto[fx][fy];
    ans.push_back(nextdir);
    fx -= dirx[nextdir];
    fy -= diry[nextdir];
  }
  reverse((ans).begin(), (ans).end());
  px = 1;
  py = 1;
  for (int i = 0; i <= ((int)(ans).size()) - 1; i++) move(ans[i]);
}
