#include <bits/stdc++.h>
using namespace std;
const long long int mxn = 1e3 + 5;
string ans, s[mxn];
long long int X, Y, k, n, m, dis[mxn][mxn];
bool valid(long long int x, long long int y) {
  if (x >= 0 && x < n && y >= 0 && y < m && s[x][y] != '*') return true;
  return false;
}
void dfs(long long int x, long long int y, char c) {
  if (c != 'x') ans += c;
  if (k == 0) return;
  k--;
  if (valid(x + 1, y) && dis[x + 1][y] <= k)
    dfs(x + 1, y, 'D');
  else if (valid(x, y - 1) && dis[x][y - 1] <= k)
    dfs(x, y - 1, 'L');
  else if (valid(x, y + 1) && dis[x][y + 1] <= k)
    dfs(x, y + 1, 'R');
  else if (valid(x - 1, y) && dis[x - 1][y] <= k)
    dfs(x - 1, y, 'U');
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long int t = 1;
  while (t--) {
    long long int i, j;
    cin >> n >> m >> k;
    queue<pair<long long int, long long int> > q;
    for (i = 0; i < n; i++) {
      cin >> s[i];
      for (j = 0; j < m; j++)
        if (s[i][j] == 'X') {
          X = i, Y = j;
          break;
        } else
          dis[i][j] = 1e18;
    }
    q.push({X, Y});
    dis[X][Y] = 0;
    if (k & 1) {
      cout << "IMPOSSIBLE";
      return 0;
    }
    while (!q.empty()) {
      long long int x = q.front().first, y = q.front().second;
      q.pop();
      if (valid(x + 1, y) && dis[x + 1][y] > dis[x][y] + 1)
        q.push({x + 1, y}), dis[x + 1][y] = dis[x][y] + 1;
      if (valid(x, y - 1) && dis[x][y - 1] > dis[x][y] + 1)
        q.push({x, y - 1}), dis[x][y - 1] = dis[x][y] + 1;
      if (valid(x, y + 1) && dis[x][y + 1] > dis[x][y] + 1)
        q.push({x, y + 1}), dis[x][y + 1] = dis[x][y] + 1;
      if (valid(x - 1, y) && dis[x - 1][y] > dis[x][y] + 1)
        q.push({x - 1, y}), dis[x - 1][y] = dis[x][y] + 1;
    }
    dfs(X, Y, 'x');
    if (ans.size() == 0 || k) {
      cout << "IMPOSSIBLE";
    } else
      cout << ans;
  }
  return 0;
}
