#include <bits/stdc++.h>
typedef long long ll;
#define fi first
#define se second
#define pii pair<ll, ll>
using namespace std;
const int N = 1e3 + 5;
ll n, m, stx, sty;
char a[N][N];
ll vis[N][N], vism[N][N];
ll tx[] = {-1, 0, 0, 1};
ll ty[] = {0, -1, 1, 0};
ll ai[N][N], aj[N][N];
bool ok = false;
queue <pii> mq;
bool inside(ll u, ll v) {
return (u > 0 && u <= n && v > 0 && v <= m);
}
void bfs(ll s1, ll s2) {
queue <pii> q;
q.push({s1, s2});
vis[s1][s2] = 1;
while (!q.empty()) {
ll m = mq.size();
while (m--) {
ll mx = mq.front().fi;
ll my = mq.front().se;
mq.pop();
for (int i = 0; i < 4; i++) {
ll mu = mx + tx[i];
ll mv = my + ty[i];
if (!inside(mu, mv) || a[mu][mv] == '#'|| vism[mu][mv])
continue;
vism[mu][mv] = vism[mx][my] + 1;
mq.push({mu, mv});
}
}
ll x = q.front().fi;
ll y = q.front().se;
q.pop();
for (int i = 0; i < 4; i++) {
ll u = x + tx[i];
ll v = y + ty[i];
if (!inside(u, v) || a[u][v] == '#' || vis[u][v] || (vism[u][v] && vism[u][v] <= vis[x][y] + 1))
continue;
ai[u][v] = x;
aj[u][v] = y;
q.push({u, v});
vis[u][v] = vis[x][y] + 1;
}
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
// freopen("in.inp", "r", stdin);
// freopen("ou.out", "w", stdout);
cin >> n >> m;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> a[i][j];
}
}
vector <pii> ans;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (a[i][j] == 'A') {
if (i == n || j == m || i == 1 || j == 1) {
cout << "YES\n";
cout <<"0";
return 0;
}
stx = i;
sty = j;
}
if (a[i][j] == 'M') {
mq.push({i, j});
vism[i][j] = 1;
}
if ((i == n || j == m || i == 1 || j == 1) && a[i][j] == '.') {
ans.push_back({i, j});
}
}
}
if (ans.empty()) {
cout << "NO";
return 0;
}
bfs(stx, sty);
stack <char> res;
for (auto it : ans) {
if (vis[it.fi][it.se] == 0)
continue;
ll x = it.fi, y = it.se;
while (x != stx || y != sty) {
ll dx = ai[x][y];
ll dy = aj[x][y];
if (dx == x - 1)
res.push('D');
else if (dx == x + 1)
res.push('U');
else if (dy == y - 1)
res.push('R');
else if (dy == y + 1)
res.push('L');
x = dx;
y = dy;
}
if (res.size() <= n * m) {
cout << "YES" << "\n" << res.size() << "\n";
while (!res.empty()) {
cout << res.top();
res.pop();
}
return 0;
}
else res = stack <char> ();
}
cout << "NO";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBwaWkgcGFpcjxsbCwgbGw+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjb25zdCBpbnQgTiA9IDFlMyArIDU7CgpsbCBuLCBtLCBzdHgsIHN0eTsKY2hhciBhW05dW05dOwpsbCB2aXNbTl1bTl0sIHZpc21bTl1bTl07CmxsIHR4W10gPSB7LTEsIDAsIDAsIDF9OwpsbCB0eVtdID0gezAsIC0xLCAxLCAwfTsKbGwgYWlbTl1bTl0sIGFqW05dW05dOwpib29sIG9rID0gZmFsc2U7CnF1ZXVlIDxwaWk+IG1xOwoKYm9vbCBpbnNpZGUobGwgdSwgbGwgdikgewogICAgcmV0dXJuICh1ID4gMCAmJiB1IDw9IG4gJiYgdiA+IDAgJiYgdiA8PSBtKTsKfQoKdm9pZCBiZnMobGwgczEsIGxsIHMyKSB7CiAgICBxdWV1ZSA8cGlpPiBxOwogICAgcS5wdXNoKHtzMSwgczJ9KTsKICAgIHZpc1tzMV1bczJdID0gMTsKICAgIHdoaWxlICghcS5lbXB0eSgpKSB7CiAgICAgICAgbGwgbSA9IG1xLnNpemUoKTsKICAgICAgICB3aGlsZSAobS0tKSB7CiAgICAgICAgICAgIGxsIG14ID0gbXEuZnJvbnQoKS5maTsKICAgICAgICAgICAgbGwgbXkgPSBtcS5mcm9udCgpLnNlOwogICAgICAgICAgICBtcS5wb3AoKTsKICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKICAgICAgICAgICAgICAgIGxsIG11ID0gbXggKyB0eFtpXTsKICAgICAgICAgICAgICAgIGxsIG12ID0gbXkgKyB0eVtpXTsKICAgICAgICAgICAgICAgIGlmICghaW5zaWRlKG11LCBtdikgfHwgYVttdV1bbXZdID09ICcjJ3x8IHZpc21bbXVdW212XSkKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIHZpc21bbXVdW212XSA9IHZpc21bbXhdW215XSArIDE7CiAgICAgICAgICAgICAgICBtcS5wdXNoKHttdSwgbXZ9KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbGwgeCA9IHEuZnJvbnQoKS5maTsKICAgICAgICBsbCB5ID0gcS5mcm9udCgpLnNlOwogICAgICAgIHEucG9wKCk7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKICAgICAgICAgICAgbGwgdSA9IHggKyB0eFtpXTsKICAgICAgICAgICAgbGwgdiA9IHkgKyB0eVtpXTsKICAgICAgICAgICAgaWYgKCFpbnNpZGUodSwgdikgfHwgYVt1XVt2XSA9PSAnIycgfHwgdmlzW3VdW3ZdIHx8ICh2aXNtW3VdW3ZdICYmIHZpc21bdV1bdl0gPD0gdmlzW3hdW3ldICsgMSkpCiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgYWlbdV1bdl0gPSB4OwogICAgICAgICAgICBhalt1XVt2XSA9IHk7CiAgICAgICAgICAgIHEucHVzaCh7dSwgdn0pOwogICAgICAgICAgICB2aXNbdV1bdl0gPSB2aXNbeF1beV0gKyAxOwogICAgICAgIH0KICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoMCk7CiAgICBjb3V0LnRpZSgwKTsKICAgIC8vIGZyZW9wZW4oImluLmlucCIsICJyIiwgc3RkaW4pOwogICAgLy8gZnJlb3Blbigib3Uub3V0IiwgInciLCBzdGRvdXQpOwoKICAgIGNpbiA+PiBuID4+IG07CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBtOyBqKyspIHsKICAgICAgICAgICAgY2luID4+IGFbaV1bal07CiAgICAgICAgfQogICAgfQoKICAgIHZlY3RvciA8cGlpPiBhbnM7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBtOyBqKyspIHsKICAgICAgICAgICAgaWYgKGFbaV1bal0gPT0gJ0EnKSB7CiAgICAgICAgICAgICAgICBpZiAoaSA9PSBuIHx8IGogPT0gbSB8fCBpID09IDEgfHwgaiA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgY291dCA8PCAiWUVTXG4iOwogICAgICAgICAgICAgICAgICAgIGNvdXQgPDwiMCI7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzdHggPSBpOwogICAgICAgICAgICAgICAgc3R5ID0gajsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYVtpXVtqXSA9PSAnTScpIHsKICAgICAgICAgICAgICAgIG1xLnB1c2goe2ksIGp9KTsKICAgICAgICAgICAgICAgIHZpc21baV1bal0gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgoaSA9PSBuIHx8IGogPT0gbSB8fCBpID09IDEgfHwgaiA9PSAxKSAmJiBhW2ldW2pdID09ICcuJykgewogICAgICAgICAgICAgICAgYW5zLnB1c2hfYmFjayh7aSwgan0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGlmIChhbnMuZW1wdHkoKSkgewogICAgICAgIGNvdXQgPDwgIk5PIjsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICBiZnMoc3R4LCBzdHkpOwoKICAgIHN0YWNrIDxjaGFyPiByZXM7CiAgICBmb3IgKGF1dG8gaXQgOiBhbnMpIHsKICAgICAgICBpZiAodmlzW2l0LmZpXVtpdC5zZV0gPT0gMCkKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgbGwgeCA9IGl0LmZpLCB5ID0gaXQuc2U7CiAgICAgICAgd2hpbGUgKHggIT0gc3R4IHx8IHkgIT0gc3R5KSB7CiAgICAgICAgICAgIGxsIGR4ID0gYWlbeF1beV07CiAgICAgICAgICAgIGxsIGR5ID0gYWpbeF1beV07CiAgICAgICAgICAgIGlmIChkeCA9PSB4IC0gMSkKICAgICAgICAgICAgICAgIHJlcy5wdXNoKCdEJyk7CiAgICAgICAgICAgIGVsc2UgaWYgKGR4ID09IHggKyAxKQogICAgICAgICAgICAgICAgcmVzLnB1c2goJ1UnKTsKICAgICAgICAgICAgZWxzZSBpZiAoZHkgPT0geSAtIDEpCiAgICAgICAgICAgICAgICByZXMucHVzaCgnUicpOwogICAgICAgICAgICBlbHNlIGlmIChkeSA9PSB5ICsgMSkKICAgICAgICAgICAgICAgIHJlcy5wdXNoKCdMJyk7CiAgICAgICAgICAgIHggPSBkeDsKICAgICAgICAgICAgeSA9IGR5OwogICAgICAgIH0KCiAgICAgICAgaWYgKHJlcy5zaXplKCkgPD0gbiAqIG0pIHsKICAgICAgICAgICAgY291dCA8PCAiWUVTIiA8PCAiXG4iIDw8IHJlcy5zaXplKCkgPDwgIlxuIjsKICAgICAgICAgICAgd2hpbGUgKCFyZXMuZW1wdHkoKSkgewogICAgICAgICAgICAgICAgY291dCA8PCByZXMudG9wKCk7CiAgICAgICAgICAgICAgICByZXMucG9wKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgICAgIGVsc2UgcmVzID0gc3RhY2sgPGNoYXI+ICgpOwogICAgfQogICAgCiAgICBjb3V0IDw8ICJOTyI7CiAgICByZXR1cm4gMDsKfQ==