#include <bits/stdc++.h>
using namespace std;
int lr = -1, ud = -1;
int n, m, cx = 1, cy = 1, fx, fy;
string grid[100];
bool sud[100][100], slr[100][100], visited[100][100];
bool issafe(int i, int j) {
  if (i < 0 || j < 0 || i >= n || j >= m || grid[i][j] != '*') return true;
  return false;
}
void checkud(int i, int j) {
  printf("U\n");
  fflush(stdout);
  int x, y;
  scanf("%d %d", &x, &y);
  if (i == 1) {
    if (x == i && y == j) {
      ud = 0;
    } else {
      ud = 1;
      printf("D\n");
      fflush(stdout);
      scanf("%d %d", &cx, &cy);
    }
  } else if (i == n) {
    if (x == i - 1 && y == j) {
      ud = 0;
      printf("D\n");
      fflush(stdout);
      scanf("%d %d", &cx, &cy);
    } else {
      ud = 1;
    }
  }
}
vector<char> dir;
bool findPath(int i, int j) {
  if (grid[i][j] == 'F') return true;
  if (visited[i][j] || grid[i][j] == '*') return false;
  visited[i][j] = true;
  if (i != 0 && findPath(i - 1, j)) {
    dir.push_back('U');
    return true;
  }
  if (i != n - 1 && findPath(i + 1, j)) {
    dir.push_back('D');
    return true;
  }
  if (j != 0 && findPath(i, j - 1)) {
    dir.push_back('L');
    return true;
  }
  if (j != m - 1 && findPath(i, j + 1)) {
    dir.push_back('R');
    return true;
  }
  return false;
}
void checklr(int i, int j) {
  printf("L\n");
  fflush(stdout);
  int x, y;
  scanf("%d %d", &x, &y);
  if (j == 1) {
    if (x == i && y == j) {
      lr = 0;
    } else {
      lr = 1;
      printf("R\n");
      fflush(stdout);
      scanf("%d %d", &cx, &cy);
    }
  } else if (j == m) {
    if (x == i && y == j - 1) {
      lr = 0;
      printf("R\n");
      fflush(stdout);
      scanf("%d %d", &cx, &cy);
    } else {
      lr = 1;
    }
  }
}
void moved() {
  if (ud == 0)
    printf("D\n");
  else
    printf("U\n");
  fflush(stdout);
  scanf("%d %d", &cx, &cy);
}
void moveu() {
  if (ud == 0)
    printf("U\n");
  else
    printf("D\n");
  fflush(stdout);
  scanf("%d %d", &cx, &cy);
}
void movel() {
  if (lr == 0)
    printf("L\n");
  else
    printf("R\n");
  fflush(stdout);
  scanf("%d %d", &cx, &cy);
}
void mover() {
  if (lr == 0)
    printf("R\n");
  else
    printf("L\n");
  fflush(stdout);
  scanf("%d %d", &cx, &cy);
}
int main() {
  cin >> n >> m;
  for (int i = 0; i < n; ++i) {
    cin >> grid[i];
  }
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < m; ++j) {
      if (issafe(i, j) && issafe(i - 1, j) && issafe(i + 1, j))
        sud[i][j] = true;
      if (issafe(i, j) && issafe(i, j - 1) && issafe(i, j + 1))
        slr[i][j] = true;
    }
  }
  if (sud[0][0]) checkud(cx, cy);
  if (slr[0][0]) checklr(cx, cy);
  if (lr == -1) {
    while (!slr[cx - 1][cy - 1] && cx != n && issafe(cx, cy - 1)) moved();
    if (slr[cx - 1][cy - 1]) checklr(cx, cy);
  }
  if (ud == -1) {
    while (!sud[cx - 1][cy - 1] && cy != m && issafe(cx - 1, cy)) mover();
    if (sud[cx - 1][cy - 1]) checkud(cx, cy);
  }
  findPath(cx - 1, cy - 1);
  reverse(dir.begin(), dir.end());
  for (auto it : dir) {
    if (it == 'U')
      moveu();
    else if (it == 'D')
      moved();
    else if (it == 'L')
      movel();
    else
      mover();
  }
  return 0;
}
