#include <bits/stdc++.h>
#define FIO ios_base::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
#define ll long long
#define ull unsigned long long
#define ld long double
#define Yes cout << "YES\n"
#define No cout << "NO\n"
using namespace std;
// #define IO freopen("input.txt","r",stdin); freopen("output.txt","w",stdout);
constexpr int MX = 2e5 + 5;
constexpr int MOD = 1e9 + 7;
#define all(v) v.begin() , v.end()
#define rall(v) v.rbegin() , v.rend()
#define pb push_back
#define MP make_pair
#define nl '\n'
char grid[1005][1005];
bool vis[1005][1005];
queue<pair<int,int>> q;
pair<int , int> p[1005][1005];
vector<vector<int>> directions = {
{1 , 0} , {-1 , 0} , {0 , 1} , {0 , -1}
};
void solve()
{
int n , m;
cin >> n >> m;
int x1 = 0 , y1 = 0 , x2 = -1 , y2 = -1;
for (int i = 1 ; i <= n ; i++) {
for (int j = 1; j <= m ; j++) {
cin >> grid[i][j];
if (grid[i][j] == 'A') x1 = i , y1 = j;
else if (grid[i][j] == 'M') q.emplace(i , j);
}
}
bool good = false;
p[x1][y1] = MP(-1 , -1); vis[x1][y1] = true; q.emplace(x1 , y1);
while (!q.empty()) {
auto&[a , b] = q.front(); q.pop();
if (grid[a][b] != 'M' and (a == 1 or a == n or b == 1 or b == m)) {
x2 = a , y2 = b;
good = true;
break;
}
for (auto& d : directions) {
int nx = a + d[0] , ny = b + d[1];
bool valid = nx >= 1 && nx <= n && ny >= 1 && ny <= m && grid[nx][ny] == '.';
if (valid) {
grid[nx][ny] = grid[a][b];
p[nx][ny] = MP(a , b);
q.emplace(nx , ny);
}
}
}
if(!good) {
cout << "NO";
return;
}
vector<char> ans;
while (p[x2][y2] != MP(-1 , -1)) {
auto&[px , py] = p[x2][y2];
if (px == x2 + 1) ans.pb('U');
if (px == x2 - 1) ans.pb('D');
if (py == y2 + 1) ans.pb('L');
if (py == y2 - 1) ans.pb('R');
x2 = px , y2 = py;
}
reverse(all(ans));
cout << "YES" << nl;
cout << ans.size() << nl;
for (const auto& c : ans) cout << c;
}
int main()
{
FIO
// #ifndef ONLINE_JUDGE
// IO
// #endif
int tt = 1;
// cin >> tt;
while (tt--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgRklPIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpO2Npbi50aWUobnVsbHB0cik7Y291dC50aWUobnVsbHB0cik7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgdWxsIHVuc2lnbmVkIGxvbmcgbG9uZwojZGVmaW5lIGxkIGxvbmcgZG91YmxlCiNkZWZpbmUgWWVzIGNvdXQgPDwgIllFU1xuIgojZGVmaW5lIE5vICBjb3V0IDw8ICJOT1xuIgp1c2luZyBuYW1lc3BhY2Ugc3RkOwovLyAjZGVmaW5lIElPIGZyZW9wZW4oImlucHV0LnR4dCIsInIiLHN0ZGluKTsgZnJlb3Blbigib3V0cHV0LnR4dCIsInciLHN0ZG91dCk7CmNvbnN0ZXhwciAgaW50IE1YID0gMmU1ICsgNTsKY29uc3RleHByIGludCBNT0QgPSAxZTkgKyA3OwojZGVmaW5lIGFsbCh2KSB2LmJlZ2luKCkgLCB2LmVuZCgpCiNkZWZpbmUgcmFsbCh2KSB2LnJiZWdpbigpICwgdi5yZW5kKCkKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBNUCBtYWtlX3BhaXIKI2RlZmluZSBubCAnXG4nCiAKY2hhciBncmlkWzEwMDVdWzEwMDVdOwpib29sIHZpc1sxMDA1XVsxMDA1XTsKcXVldWU8cGFpcjxpbnQsaW50Pj4gcTsKcGFpcjxpbnQgLCBpbnQ+IHBbMTAwNV1bMTAwNV07CiAKdmVjdG9yPHZlY3RvcjxpbnQ+PiBkaXJlY3Rpb25zID0gewogICAgezEgLCAwfSAsIHstMSAsIDB9ICwgezAgLCAxfSAsIHswICwgLTF9Cn07CiAKdm9pZCBzb2x2ZSgpCnsKICAgIGludCBuICwgbTsKICAgIGNpbiA+PiBuID4+IG07CiAgICBpbnQgeDEgPSAwICwgeTEgPSAwICwgeDIgPSAtMSAsIHkyID0gLTE7CiAgICBmb3IgKGludCBpID0gMSA7IGkgPD0gbiA7IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAxOyBqIDw9IG0gOyBqKyspIHsKICAgICAgICAgICAgY2luID4+IGdyaWRbaV1bal07CiAgICAgICAgICAgIGlmIChncmlkW2ldW2pdID09ICdBJykgeDEgPSBpICwgeTEgPSBqOwogICAgICAgICAgICBlbHNlIGlmIChncmlkW2ldW2pdID09ICdNJykgcS5lbXBsYWNlKGkgLCBqKTsKICAgICAgICB9CiAgICB9CiAgICBib29sIGdvb2QgPSBmYWxzZTsKICAgIHBbeDFdW3kxXSA9IE1QKC0xICwgLTEpOyB2aXNbeDFdW3kxXSA9IHRydWU7IHEuZW1wbGFjZSh4MSAsIHkxKTsKICAgIHdoaWxlICghcS5lbXB0eSgpKSB7CiAgICAgICAgYXV0byZbYSAsIGJdID0gcS5mcm9udCgpOyBxLnBvcCgpOwogICAgICAgIGlmIChncmlkW2FdW2JdICE9ICdNJyBhbmQgKGEgPT0gMSBvciBhID09IG4gb3IgYiA9PSAxIG9yIGIgPT0gbSkpIHsKICAgICAgICAgICAgeDIgPSBhICwgeTIgPSBiOwogICAgICAgICAgICBnb29kID0gdHJ1ZTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGZvciAoYXV0byYgZCA6IGRpcmVjdGlvbnMpIHsKICAgICAgICAgICAgaW50IG54ID0gYSArIGRbMF0gLCBueSA9IGIgKyBkWzFdOwogICAgICAgICAgICBib29sIHZhbGlkID0gbnggPj0gMSAmJiBueCA8PSBuICYmIG55ID49IDEgJiYgbnkgPD0gbSAmJiBncmlkW254XVtueV0gPT0gJy4nOwogICAgICAgICAgICBpZiAodmFsaWQpIHsKICAgICAgICAgICAgICAgIGdyaWRbbnhdW255XSA9IGdyaWRbYV1bYl07CiAgICAgICAgICAgICAgICBwW254XVtueV0gPSBNUChhICwgYik7CiAgICAgICAgICAgICAgICBxLmVtcGxhY2UobnggLCBueSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpZighZ29vZCkgewogICAgICAgIGNvdXQgPDwgIk5PIjsKICAgICAgICByZXR1cm47CiAgICB9CiAgICB2ZWN0b3I8Y2hhcj4gYW5zOwogICAgd2hpbGUgKHBbeDJdW3kyXSAhPSBNUCgtMSAsIC0xKSkgewogICAgICAgIGF1dG8mW3B4ICwgcHldID0gcFt4Ml1beTJdOwogICAgICAgIGlmIChweCA9PSB4MiArIDEpIGFucy5wYignVScpOwogICAgICAgIGlmIChweCA9PSB4MiAtIDEpIGFucy5wYignRCcpOwogICAgICAgIGlmIChweSA9PSB5MiArIDEpIGFucy5wYignTCcpOwogICAgICAgIGlmIChweSA9PSB5MiAtIDEpIGFucy5wYignUicpOwogICAgICAgIHgyID0gcHggLCB5MiA9IHB5OwogICAgfQogICAgcmV2ZXJzZShhbGwoYW5zKSk7CiAgICBjb3V0IDw8ICJZRVMiIDw8IG5sOwogICAgY291dCA8PCBhbnMuc2l6ZSgpIDw8IG5sOwogICAgZm9yIChjb25zdCBhdXRvJiBjIDogYW5zKSBjb3V0IDw8IGM7Cn0KIAppbnQgbWFpbigpCnsKICAgIEZJTwovLyAjaWZuZGVmIE9OTElORV9KVURHRQovLyBJTwovLyAjZW5kaWYKICAgIGludCB0dCA9IDE7CiAgICAvLyBjaW4gPj4gdHQ7CiAgICB3aGlsZSAodHQtLSkgewogICAgICAgIHNvbHZlKCk7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==