#include <bits/stdc++.h>
using namespace std;
int dis[10500];
int ans[10500] = {0};
int n, m;
string a[10500];
vector<int> path;
pair<pair<int, int>, pair<int, int> > go[10500];
pair<int, int> fi = make_pair(-1, -1);
int l = 0, r = 0;
void bfs(pair<int, int> st, int d) {
  go[r++] = (make_pair(st, make_pair(0, -1)));
  while (l < r) {
    auto cur = go[l++];
    pair<int, int> cor = cur.first;
    pair<int, int> qu = cur.second;
    dis[((cor.first * 101) + cor.second)] = qu.first;
    ans[((cor.first * 101) + cor.second)] = qu.second;
    int x = cor.first;
    int y = cor.second;
    if (a[x][y] == 'F') fi = make_pair(x, y);
    int d = qu.first;
    if (x - 1 >= 0 && a[x - 1][y] != '*' &&
        ans[((make_pair(x - 1, y).first * 101) + make_pair(x - 1, y).second)] ==
            0) {
      go[r++] = (make_pair(make_pair(x - 1, y), make_pair(d + 1, 1)));
      ans[((make_pair(x - 1, y).first * 101) + make_pair(x - 1, y).second)] = 1;
    }
    if (y - 1 >= 0 && a[x][y - 1] != '*' &&
        ans[((make_pair(x, y - 1).first * 101) + make_pair(x, y - 1).second)] ==
            0) {
      go[r++] = (make_pair(make_pair(x, y - 1), make_pair(d + 1, 2)));
      ans[((make_pair(x, y - 1).first * 101) + make_pair(x, y - 1).second)] = 2;
    }
    if (x + 1 < n && a[x + 1][y] != '*' &&
        ans[((make_pair(x + 1, y).first * 101) + make_pair(x + 1, y).second)] ==
            0) {
      go[r++] = (make_pair(make_pair(x + 1, y), make_pair(d + 1, 3)));
      ans[((make_pair(x + 1, y).first * 101) + make_pair(x + 1, y).second)] = 3;
    }
    if (y + 1 < m && a[x][y + 1] != '*' &&
        ans[((make_pair(x, y + 1).first * 101) + make_pair(x, y + 1).second)] ==
            0) {
      go[r++] = (make_pair(make_pair(x, y + 1), make_pair(d + 1, 4)));
      ans[((make_pair(x, y + 1).first * 101) + make_pair(x, y + 1).second)] = 4;
    }
  }
}
void masterstroke() {
  cin >> n >> m;
  for (int i = 0; i < n; i++) cin >> a[i];
  bfs(make_pair(0, 0), 0);
  pair<int, int> cur = fi;
  while (cur != make_pair(0, 0)) {
    int ze = ans[((cur.first * 101) + cur.second)];
    path.push_back(ze);
    if (ze == 1) {
      cur.first += 1;
    }
    if (ze == 2) {
      cur.second += 1;
    }
    if (ze == 3) {
      cur.first -= 1;
    }
    if (ze == 4) {
      cur.second -= 1;
    }
  }
  int un1 = 0, un2 = 0;
  int x0 = 0, y0 = 0;
  int xa = path.size();
  int x, y;
  if (xa == 0) return;
  for (int i = xa - 1; i >= 0; i--) {
    int j = path[i];
    if ((j == 1 || j == 3) && un1 == 0) {
      cout << "D" << endl;
      cout.flush();
      cin >> x >> y;
      if (make_pair(x - 1, y - 1) == fi) return;
      if (x == -1) return;
      if (2 == x)
        un1 = 1;
      else {
        un1 = 2;
        cout << "U" << endl;
        cout.flush();
        cin >> x >> y;
        if (x == -1) return;
        if (make_pair(x - 1, y - 1) == fi) return;
      }
    } else if ((j == 2 || j == 4) && un2 == 0) {
      cout << "R" << endl;
      cin >> x >> y;
      if (x == -1) return;
      if (make_pair(x - 1, y - 1) == fi) return;
      cout.flush();
      if (2 == y)
        un2 = 1;
      else {
        un2 = 2;
        cout << "L" << endl;
        cout.flush();
        cin >> x >> y;
        if (x == -1) return;
        if (make_pair(x - 1, y - 1) == fi) return;
      }
    } else {
      if (j == 1) {
        if (un1 == 1)
          cout << "U" << endl;
        else
          cout << "D" << endl;
        cout.flush();
      }
      if (j == 3) {
        if (un1 == 1)
          cout << "D" << endl;
        else
          cout << "U" << endl;
        cout.flush();
      }
      if (j == 2) {
        if (un2 == 1)
          cout << "L" << endl;
        else
          cout << "R" << endl;
        cout.flush();
      }
      if (j == 4) {
        if (un2 == 1)
          cout << "R" << endl;
        else
          cout << "L" << endl;
        cout.flush();
      }
      cin >> x >> y;
      if (x == -1) return;
      if (make_pair(x - 1, y - 1) == fi) return;
    }
  }
  cout << "ac ho ja varna *** **** *****" << endl;
}
int main() {
  int t = 1;
  for (int i = 0; i < t; i++) masterstroke();
}
