#include <bits/stdc++.h>
using namespace std;
char T[100][101];
bool Map[100][100];
pair<int, int> par[100][100];
queue<pair<int, int> > Q;
vector<pair<int, int> > Path;
pair<int, int> dir[4] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n, m;
  cin >> n >> m;
  cin.get();
  for (int i = 0; i < n; i++) cin.getline(T[i], 101);
  Q.push({0, 0});
  bool UD = false, LR = false;
  while (!Q.empty()) {
    pair<int, int> &p = Q.front();
    for (int i = 0; i < 4; i++) {
      int A = p.first + dir[i].first, B = p.second + dir[i].second;
      if (A < 0 || A > n - 1 || B < 0 || B > m - 1) continue;
      if (!Map[A][B])
        if (T[A][B] == '.') {
          Map[A][B] = true, Q.push({A, B});
          par[A][B].first = p.first, par[A][B].second = p.second;
        } else if (T[A][B] == 'F') {
          par[A][B].first = p.first, par[A][B].second = p.second;
          int x = A, y = B;
          while (x != 0 || y != 0) {
            Path.push_back({x, y});
            int C = par[x][y].first, G = par[x][y].second;
            x = C, y = G;
          }
          pair<int, int> pos = {0, 0};
          char ud[3], lr[3];
          while (!Path.empty()) {
            pair<int, int> &U = Path.back();
            int x1, y1;
            if (U.first != pos.first) {
              if (!UD) {
                cout << "D" << endl, fflush(stdout);
                cin >> x1 >> y1;
                if (x1 - 1 == pos.first && y1 - 1 == pos.second) {
                  ud[0] = 'D', ud[1] = 'U';
                  cout << 'U' << endl;
                  fflush(stdout);
                  cin >> x1 >> y1;
                } else
                  ud[0] = 'U', ud[1] = 'D';
                UD = true;
              } else {
                if (U.first > pos.first)
                  cout << ud[1] << endl;
                else
                  cout << ud[0] << endl;
                fflush(stdout);
                cin >> x1 >> y1;
              }
            } else {
              if (!LR) {
                cout << 'R' << endl, fflush(stdout);
                cin >> x1 >> y1;
                if (x1 - 1 == pos.first && y1 - 1 == pos.second) {
                  lr[0] = 'R', lr[1] = 'L';
                  cout << 'L' << endl;
                  fflush(stdout);
                  cin >> x1 >> y1;
                } else
                  lr[0] = 'L', lr[1] = 'R';
                LR = true;
              } else {
                if (U.second > pos.second)
                  cout << lr[1] << endl;
                else
                  cout << lr[0] << endl;
                fflush(stdout);
                cin >> x1 >> y1;
              }
            }
            pos.first = x1 - 1, pos.second = y1 - 1;
            Path.pop_back();
          }
          return 0;
        }
    }
    Q.pop();
  }
}
