#include <bits/stdc++.h>
using namespace std;
/*
boundaries:
- row 1 or n
- col 1 or m
*/
#define ll long long
#define INF 1000000000
#define MAX 1005
char di[4] = {'U', 'D', 'L', 'R'};
int dx[4] = {-1, 1, 0, 0};
int dy[4] = {0, 0, -1, 1};
char a[MAX][MAX];
int n, m;
pair<int, int> par[MAX][MAX];
char SongNghi[MAX][MAX];
int dist_m[MAX][MAX];
int dist_p[MAX][MAX];
void solve() {
cin >> n >> m;
int stx = -1, sty = -1;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> a[i][j];
if (a[i][j] == 'A') {
stx = i;
sty = j;
}
}
}
for (int i = 0; i <= n; i++) {
for (int j = 0; j <= m; j++) {
dist_m[i][j] = dist_p[i][j] = INF;
par[i][j] = {i, j};
}
}
queue<pair<int, int>> q;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (a[i][j] == 'M') {
q.push({i, j});
dist_m[i][j] = 0;
}
}
}
while (!q.empty()) {
pair<int, int> u = q.front();
q.pop();
int x = u.first;
int y = u.second;
for (int i = 0; i < 4; i++) {
int nx = x + dx[i];
int ny = y + dy[i];
if (nx < 0 || nx > n || ny < 0 || ny > m || a[nx][ny] == '#' || dist_p[nx][ny] <= dist_p[x][y] + 1) continue;
dist_p[nx][ny] = dist_p[x][y] + 1;
q.push({nx, ny});
}
}
q.push({stx, sty});
while (!q.empty()) {
pair<int, int> u = q.front();
q.pop();
int x = u.first;
int y = u.second;
for (int i = 0; i < 4; i++) {
int nx = x + dx[i];
int ny = y + dy[i];
if (nx < 0 || nx > n || ny < 0 || ny > m || a[nx][ny] == '#' || dist_p[nx][ny] <= dist_p[x][y] + 1) continue;
if (dist_p[nx][ny] >= dist_m[nx][ny]) continue;
dist_p[nx][ny] = dist_p[x][y] + 1;
SongNghi[nx][ny] = di[i];
par[nx][ny] = {x, y};
q.push({nx, ny});
}
}
int enx = -1, eny = -1;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (a[i][j] == '.' && (i == 1 || i == n) && dist_p[i][j] != INF) {
enx = i;
eny = j;
}
if (a[i][j] == '.' && (j == 1 || j == m) && dist_p[i][j] != INF) {
enx = i;
eny = j;
}
}
}
if (enx == -1 && eny == -1) {
cout << "NO\n";
return;
}
vector<char> answer;
pair<int, int> cur = {enx, eny};
while (cur.first != stx && cur.second != sty) {
answer.push_back(SongNghi[cur.first][cur.second]);
cur = par[cur.first][cur.second];
}
reverse(answer.begin(), answer.end());
for (char c : answer) cout << c << '\n';
}
int main() {
solve();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovKgpib3VuZGFyaWVzOgotIHJvdyAxIG9yIG4KLSBjb2wgMSBvciBtCiovCgojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIElORiAxMDAwMDAwMDAwCiNkZWZpbmUgTUFYIDEwMDUgCgpjaGFyIGRpWzRdID0geydVJywgJ0QnLCAnTCcsICdSJ307CmludCBkeFs0XSA9IHstMSwgMSwgMCwgMH07CmludCBkeVs0XSA9IHswLCAwLCAtMSwgMX07CgpjaGFyIGFbTUFYXVtNQVhdOwppbnQgbiwgbTsKCnBhaXI8aW50LCBpbnQ+IHBhcltNQVhdW01BWF07CmNoYXIgU29uZ05naGlbTUFYXVtNQVhdOwppbnQgZGlzdF9tW01BWF1bTUFYXTsKaW50IGRpc3RfcFtNQVhdW01BWF07IAoKdm9pZCBzb2x2ZSgpIHsKICAgIGNpbiA+PiBuID4+IG07IAoKICAgIGludCBzdHggPSAtMSwgc3R5ID0gLTE7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBtOyBqKyspIHsKICAgICAgICAgICAgY2luID4+IGFbaV1bal07IAogICAgICAgICAgICBpZiAoYVtpXVtqXSA9PSAnQScpIHsKICAgICAgICAgICAgICAgIHN0eCA9IGk7CiAgICAgICAgICAgICAgICBzdHkgPSBqOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IG47IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDw9IG07IGorKykgewogICAgICAgICAgICBkaXN0X21baV1bal0gPSBkaXN0X3BbaV1bal0gPSBJTkY7CiAgICAgICAgICAgIHBhcltpXVtqXSA9IHtpLCBqfTsKICAgICAgICB9CiAgICB9CgogICAgcXVldWU8cGFpcjxpbnQsIGludD4+IHE7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBtOyBqKyspIHsKICAgICAgICAgICAgaWYgKGFbaV1bal0gPT0gJ00nKSB7CiAgICAgICAgICAgICAgICBxLnB1c2goe2ksIGp9KTsKICAgICAgICAgICAgICAgIGRpc3RfbVtpXVtqXSA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgd2hpbGUgKCFxLmVtcHR5KCkpIHsKICAgICAgICBwYWlyPGludCwgaW50PiB1ID0gcS5mcm9udCgpOwogICAgICAgIHEucG9wKCk7CgogICAgICAgIGludCB4ID0gdS5maXJzdDsKICAgICAgICBpbnQgeSA9IHUuc2Vjb25kOwoKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewogICAgICAgICAgICBpbnQgbnggPSB4ICsgZHhbaV07IAogICAgICAgICAgICBpbnQgbnkgPSB5ICsgZHlbaV07CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAobnggPCAwIHx8IG54ID4gbiB8fCBueSA8IDAgfHwgbnkgPiBtIHx8IGFbbnhdW255XSA9PSAnIycgfHwgZGlzdF9wW254XVtueV0gPD0gZGlzdF9wW3hdW3ldICsgMSkgY29udGludWU7CiAgICAgICAgICAgIGRpc3RfcFtueF1bbnldID0gZGlzdF9wW3hdW3ldICsgMTsgCiAgICAgICAgICAgIHEucHVzaCh7bngsIG55fSk7CiAgICAgICAgfQogICAgfQoKICAgIHEucHVzaCh7c3R4LCBzdHl9KTsKICAgIHdoaWxlICghcS5lbXB0eSgpKSB7CiAgICAgICAgcGFpcjxpbnQsIGludD4gdSA9IHEuZnJvbnQoKTsgCiAgICAgICAgcS5wb3AoKTsKCiAgICAgICAgaW50IHggPSB1LmZpcnN0OyAKICAgICAgICBpbnQgeSA9IHUuc2Vjb25kOwoKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewogICAgICAgICAgICBpbnQgbnggPSB4ICsgZHhbaV07IAogICAgICAgICAgICBpbnQgbnkgPSB5ICsgZHlbaV07CgogICAgICAgICAgICBpZiAobnggPCAwIHx8IG54ID4gbiB8fCBueSA8IDAgfHwgbnkgPiBtIHx8IGFbbnhdW255XSA9PSAnIycgfHwgZGlzdF9wW254XVtueV0gPD0gZGlzdF9wW3hdW3ldICsgMSkgY29udGludWU7CiAgICAgICAgICAgIGlmIChkaXN0X3BbbnhdW255XSA+PSBkaXN0X21bbnhdW255XSkgY29udGludWU7CgogICAgICAgICAgICBkaXN0X3BbbnhdW255XSA9IGRpc3RfcFt4XVt5XSArIDE7CiAgICAgICAgICAgIFNvbmdOZ2hpW254XVtueV0gPSBkaVtpXTsKICAgICAgICAgICAgcGFyW254XVtueV0gPSB7eCwgeX07CiAgICAgICAgICAgIHEucHVzaCh7bngsIG55fSk7CiAgICAgICAgfQogICAgfQoKICAgIGludCBlbnggPSAtMSwgZW55ID0gLTE7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBtOyBqKyspIHsKICAgICAgICAgICAgaWYgKGFbaV1bal0gPT0gJy4nICYmIChpID09IDEgfHwgaSA9PSBuKSAmJiBkaXN0X3BbaV1bal0gIT0gSU5GKSB7CiAgICAgICAgICAgICAgICBlbnggPSBpOyAKICAgICAgICAgICAgICAgIGVueSA9IGo7CiAgICAgICAgICAgIH0gCgogICAgICAgICAgICBpZiAoYVtpXVtqXSA9PSAnLicgJiYgKGogPT0gMSB8fCBqID09IG0pICYmIGRpc3RfcFtpXVtqXSAhPSBJTkYpIHsKICAgICAgICAgICAgICAgIGVueCA9IGk7IAogICAgICAgICAgICAgICAgZW55ID0gajsKICAgICAgICAgICAgfQogICAgICAgIH0gCiAgICB9CgogICAgaWYgKGVueCA9PSAtMSAmJiBlbnkgPT0gLTEpIHsKICAgIAljb3V0IDw8ICJOT1xuIjsgCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZlY3RvcjxjaGFyPiBhbnN3ZXI7IAogICAgcGFpcjxpbnQsIGludD4gY3VyID0ge2VueCwgZW55fTsKCiAgICB3aGlsZSAoY3VyLmZpcnN0ICE9IHN0eCAmJiBjdXIuc2Vjb25kICE9IHN0eSkgewogICAgICAgIGFuc3dlci5wdXNoX2JhY2soU29uZ05naGlbY3VyLmZpcnN0XVtjdXIuc2Vjb25kXSk7CiAgICAgICAgY3VyID0gcGFyW2N1ci5maXJzdF1bY3VyLnNlY29uZF07CiAgICB9CgogICAgcmV2ZXJzZShhbnN3ZXIuYmVnaW4oKSwgYW5zd2VyLmVuZCgpKTsKICAgIGZvciAoY2hhciBjIDogYW5zd2VyKSBjb3V0IDw8IGMgPDwgJ1xuJzsKfSAgIAoKaW50IG1haW4oKSB7CiAgICBzb2x2ZSgpOwp9