Link to this code: https://cses.fi/paste/6deb1d0d0737feffef63df/
#include <algorithm>
#include <iostream>
#include <queue>
#include <string>
#include <utility>
#include <vector>
#define test(x) cerr << "Line(" << __LINE__ << ") " #x << ' ' << x << endl

using namespace std;
using ll = long long;
typedef pair<int, int> pii;

const int di[4] = {-1, 1, 0, 0};
const int dj[4] = {0, 0, -1, 1};
const string directions = "UDLR";

const int inf = 1e9;

void solve() {
        int N, M;
        cin >> N >> M;
        vector<vector<bool>> visited(N + 2, vector<bool>(M + 2, 1));
        vector<vector<int>> distance(N + 2, vector<int> (M + 2, inf));
        vector<vector<int>> direction(N + 2, vector<int> (M + 2));
        int ai, aj, bi, bj;
        for (int i = 1; i <= N; i++) {
                for (int j = 1; j <= M; j++) {
                        char c;
                        cin >> c;
                        if (c == '.') {
                                visited[i][j] = 0;
                        }
                        if (c == 'A') {
                                ai = i;
                                aj = j;
                                visited[i][j] = 0;
                        }
                        if (c == 'B') {
                                bi = i;
                                bj = j;
                                visited[i][j] = 0;
                        }
                }
        }
        queue<pair<int, int>> qu;
        qu.push({ai, aj});
        distance[ai][aj] = 0;
        visited[ai][aj] = 1;
        while (!qu.empty()) {
                const auto [i, j] = qu.front();
                qu.pop();
                if (i == bi and j == bj) {
                        cout << "YES\n";
                        cout << distance[i][j] << '\n';
                        
                        string path = "";
                        int cur_i = i, cur_j = j;
                        while (cur_i != ai or cur_j != aj) {
                                int dir = direction[cur_i][cur_j];
                                path += directions[dir];
                                cur_i -= di[dir];
                                cur_j -= dj[dir];
                        }
                        reverse(path.begin(), path.end());
                        cout << path << '\n';
                        return;
                }
                for (int k = 0; k < 4; k++) {
                        int ni = i + di[k], nj = j + dj[k];
                        if (!visited[ni][nj]) {
                                distance[ni][nj] = distance[i][j] + 1;
                                visited[ni][nj] = 1;
                                direction[ni][nj] = k;
                                qu.push({ni, nj});
                        }
                }
        }
        cout << "NO\n";
}

int main() {
        cin.tie(nullptr)->sync_with_stdio(false);
        solve();
        return 0;
}