#include <bits/stdc++.h>
using namespace std;
long long power(long long a, long long b, long long mod) {
  long long ret = 1;
  while (b) {
    if (b & 1) ret = ret * a % mod;
    a = a * a % mod;
    b >>= 1;
  }
  return ret;
}
long long gcd(long long a, long long b) {
  while (b) b ^= a ^= b ^= a %= b;
  return a;
}
string up = "U", down = "D", _right = "R", _left = "L";
int mat[110][110];
int cur_x, cur_y;
int dist[110][110];
string str[110];
int visited[110][110];
pair<int, int> par[110][110];
int dx, dy;
struct node {
  int x, y;
  int dist;
  node() {}
  node(int x, int y, int dist) {
    this->x = x;
    this->y = y;
    this->dist = dist;
  }
  bool operator()(node &a, node &b) { return a.dist > b.dist; }
};
void print(string str) {
  cout << str << endl;
  fflush(stdout);
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  int n, m;
  cin >> n >> m;
  for (int i = 1; i <= n; i++) {
    cin >> str[i];
    for (int j = 1; j <= m; j++) {
      dist[i][j] = 1e9;
      if (str[i][j - 1] == '.')
        mat[i][j] = 1;
      else if (str[i][j - 1] == '*')
        mat[i][j] = -1;
      else {
        mat[i][j] = 2;
        dx = i, dy = j;
      }
    }
  }
  priority_queue<node, vector<node>, node> pq;
  pq.push(node(dx, dy, 0));
  par[dx][dy] = {-1, -1};
  dist[dx][dy] = 0;
  while (pq.size()) {
    node top = pq.top();
    pq.pop();
    if (visited[top.x][top.y]) continue;
    visited[top.x][top.y] = 1;
    for (int i = -1; i <= 1; i++) {
      for (int j = -1; j <= 1; j++) {
        if (i && j) continue;
        if (i + j == 0) continue;
        int nx = top.x + i, ny = top.y + j;
        if (nx == 0 or nx == n + 1) continue;
        if (ny == 0 or ny == m + 1) continue;
        if (mat[nx][ny] == -1) continue;
        if (dist[nx][ny] > top.dist + 1) {
          dist[nx][ny] = top.dist + 1;
          par[nx][ny] = {top.x, top.y};
          pq.push(node(nx, ny, dist[nx][ny]));
        }
      }
    }
  }
  int MX = 2 * n * m;
  if (dx == 1) {
    int flag = 1;
    for (int i = 1; i <= dy; i++) {
      if (mat[1][i] == -1) {
        flag = 0;
        break;
      }
    }
    if (flag) {
      print("R");
      int x, y;
      cin >> x >> y;
      if (x == 1 and y == 1) {
        int i = dy - 1;
        while (i--) {
          print("L");
          cin >> x >> y;
        }
      } else {
        int i = dy - 2;
        while (i--) {
          print("R");
          cin >> x >> y;
        }
      }
      return 0;
    }
  }
  if (dy == 1) {
    int flag = 1;
    for (int i = 1; i <= dx; i++) {
      if (mat[i][1] == -1) {
        flag = 0;
        break;
      }
    }
    if (flag) {
      print("D");
      int x, y;
      cin >> x >> y;
      if (x == 1 and y == 1) {
        int i = dx - 1;
        while (i--) {
          print("U");
          cin >> x >> y;
        }
      } else {
        int i = dx - 2;
        while (i--) {
          print("D");
          cin >> x >> y;
        }
      }
      return 0;
    }
  }
  int cnt = 0;
  int idx = 2;
  if (mat[1][2] == 1 and mat[2][1] == 1) {
    print(_right);
    cnt++;
    int x, y;
    cin >> x >> y;
    int px = x, py = y;
    if (x == 1 and y == 1) {
      swap(_left, _right);
    } else if (mat[2][2] == -1) {
      print(_left);
      cnt++;
      cin >> x >> y;
      px = x, py = y;
      assert(x == 1 and y == 1);
    }
    print(down);
    cin >> x >> y;
    cnt++;
    if (x == px and y == py) {
      swap(up, down);
    }
    cur_x = x;
    cur_y = y;
  } else if (mat[1][2] == -1) {
    int x, y;
    print(down);
    cin >> x >> y;
    cnt++;
    int px, py;
    if (x == 1 and y == 1) {
      swap(up, down);
    }
    while (mat[x][2] == -1) {
      print(down);
      cin >> x >> y;
      cnt++;
      px = x, py = y;
    }
    print(_right);
    cnt++;
    cin >> x >> y;
    if (x == px and y == py) {
      swap(_left, _right);
    }
    cur_x = x;
    cur_y = y;
  } else if (mat[2][1] == -1) {
    int x, y;
    print(_right);
    cin >> x >> y;
    cnt++;
    int px, py;
    if (x == 1 and y == 1) {
      swap(_left, _right);
    }
    while (mat[2][y] == -1) {
      print(_right);
      cin >> x >> y;
      cnt++;
      px = x, py = y;
    }
    print(down);
    cin >> x >> y;
    cnt++;
    if (x == px and y == py) {
      swap(up, down);
    }
    cur_x = x;
    cur_y = y;
  }
  while (par[cur_x][cur_y] != make_pair(-1, -1)) {
    int par_x = par[cur_x][cur_y].first;
    int par_y = par[cur_x][cur_y].second;
    if (par_x == cur_x + 1)
      print(down);
    else if (par_x == cur_x - 1)
      print(up);
    else if (par_y == cur_y + 1)
      print(_right);
    else if (par_y == cur_y - 1)
      print(_left);
    cin >> cur_x >> cur_y;
    assert(cur_x == par_x && cur_y == par_y);
  }
  return 0;
}
