#include<iostream>
#include<string>
#include<algorithm>

using namespace std;

const int MAX = 11;

int H,W;
char m[MAX][MAX];

string res;

class P{
public:
  int x,y,d;
  P(int x,int y,int d):x(x),y(y),d(d){};
  P(){};
  bool operator==(const P &p)const{
    return p.x == x && p.y == y && p.d == d;
  }
};

char conv[4] = {'U','R','D','L'};
int dx[] = {0,1,0,-1};
int dy[] = {-1,0,1,0};


P no(-1,-1,-1);
bool f;

P func(P s){
  
  while(1){
    if(m[s.y][s.x] == 'o')return s;
    if(!(0 <= s.x && s.x < W))return no;
    if(!(0 <= s.y && s.y < H))return no;
    
    s.x = s.x + dx[s.d];
    s.y = s.y + dy[s.d];
  }
}


void dfs(P s,int cnt){
  P np;

  if(cnt == 0){
    f = true;
    return;
  }
  
  for(int i = 0 ; i < 4 ; i++){
    if((s.d + 2)%4 == i)continue;
    np = func(P(s.x + dx[i],s.y + dy[i],i));
    if(np == no)continue;
    m[np.y][np.x] = '.';
    dfs(np,cnt-1);
    m[np.y][np.x] = 'o';
    if(f){
      res += conv[np.d];
      return;
    }
  }
}

int main(){
  cin >> H >> W;
  P s;
  int cnt = 0;
  f = false;

  for(int i = 0 ; i < H ; i++){
    for(int j = 0 ; j < W ; j++){
      cin >> m[i][j];
      if(m[i][j] == 'U')s = P(j,i,0);
      else if(m[i][j] == 'R') s = P(j,i,1);
      else if(m[i][j] == 'D') s = P(j,i,2);
      else if(m[i][j] == 'L') s = P(j,i,3);
      else if(m[i][j] == 'o') cnt++;
    }
  }
  dfs(s,cnt);
  reverse(res.begin(),res.end());
  cout << res << endl;
  return 0;
}