#include <iostream>
#include <string>
#include <utility>
#include <queue>
#include <tuple>
#define MAX 10
using namespace std;
int N, M;
char board[MAX][MAX];
int dy[4] = {-1, 0, 1, 0}; // 위, 오른쪽, 아래, 왼쪽
int dx[4] = {0, 1, 0, -1};
bool visited[MAX][MAX][MAX][MAX];
pair<int, int> p[2]; // index 0 : Red, 1 : Blue
int BFS ()
{
queue<tuple<int, int, int, int>> q;
q.push(make_tuple(p[0].first, p[0].second, p[1].first, p[1].second));
visited[p[0].first][p[0].second][p[1].first][p[1].second] = true;
for (int t = 0; t < MAX; t++)
{
while (!q.empty())
{
int ry = get<0>(q.front());
int rx = get<1>(q.front());
int by = get<2>(q.front());
int bx = get<3>(q.front());
q.pop();
for (int way = 0; way < 4; way++)
{
bool gameOver[2] = {false, false}; // index 0 : red, 1 : blue
int idx = 0; // idx = 1 : red first start, 0 : blue first start
int ryy = ry;
int rxx = rx;
int byy = by;
int bxx = bx;
// dy, dx 순서 : 위, 오른쪽, 아래, 왼쪽
// 기울어졌을 때 빨간공, 파란공 중에서 누가 먼저 기울어지는지
if ((way == 0 && ryy < byy) || (way == 1 && rxx > bxx) || (way == 2 && ryy > byy) || (way == 3 && rxx < bxx))
{
idx = 1;
}
for (int i = 0; i < 2; i++)
{
if (idx == 1)
{
while (1)
{
if (board[ryy][rxx] != '.') break;
ryy += dy[way];
rxx += dx[way];
}
if (board[ryy][rxx] == 'O')
{
gameOver[0] = true;
}
else // 벽에 부딪힘. 전으로 롤백
{
ryy -= dy[way];
rxx -= dx[way];
board[ryy][rxx] = 'R';
}
idx = 1 - idx;
continue;
}
if (idx == 0)
{
while (1)
{
if (board[byy][bxx] != '.') break;
byy += dy[way];
bxx += dx[way];
}
if (board[byy][bxx] == 'O')
{
gameOver[1] = true;
}
else // 벽에 부딪힘. 전으로 롤백
{
byy -= dy[way];
bxx -= dx[way];
board[byy][bxx] = 'B';
}
idx = 1 - idx;
continue;
}
}
if (gameOver[0] && gameOver[1] == false)
{
cout << '\n';
for (int n = 0; n < N; n++)
{
for (int m = 0; m < M; m++)
{
cout << board[n][m] << ' ';
}
cout << '\n';
}
return 1;
}
if (gameOver[0] == false)
{
board[ryy][rxx] = '.';
}
if (gameOver[1] == false)
{
board[byy][bxx] = '.';
}
if (gameOver[1] == false)
{
if (visited[ryy][rxx][byy][bxx]) continue;
visited[ryy][rxx][byy][bxx] = true;
q.push(make_tuple(ryy, rxx, byy, bxx));
}
}
}
}
return 0;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> N >> M;
for (int i = 0; i < N; i++)
{
string s;
cin >> s;
for (int j = 0; j < s.size(); j++)
{
if (s[j] == 'R')
{
p[0] = make_pair(i, j);
board[i][j] = '.';
}
else if (s[j] == 'B')
{
p[1] = make_pair(i, j);
board[i][j] = '.';
}
else
board[i][j] = s[j];
}
}
cout << BFS() << '\n';
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dXRpbGl0eT4KI2luY2x1ZGUgPHF1ZXVlPgojaW5jbHVkZSA8dHVwbGU+CiNkZWZpbmUgTUFYIDEwCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgTiwgTTsKY2hhciBib2FyZFtNQVhdW01BWF07CmludCBkeVs0XSA9IHstMSwgMCwgMSwgMH07IC8vIOychCwg7Jik66W47Kq9LCDslYTrnpgsIOyZvOyqvQppbnQgZHhbNF0gPSB7MCwgMSwgMCwgLTF9Owpib29sIHZpc2l0ZWRbTUFYXVtNQVhdW01BWF1bTUFYXTsKcGFpcjxpbnQsIGludD4gcFsyXTsgLy8gaW5kZXggMCA6IFJlZCwgMSA6IEJsdWUKCmludCBCRlMgKCkKewogICAgcXVldWU8dHVwbGU8aW50LCBpbnQsIGludCwgaW50Pj4gcTsKICAgIHEucHVzaChtYWtlX3R1cGxlKHBbMF0uZmlyc3QsIHBbMF0uc2Vjb25kLCBwWzFdLmZpcnN0LCBwWzFdLnNlY29uZCkpOwogICAgdmlzaXRlZFtwWzBdLmZpcnN0XVtwWzBdLnNlY29uZF1bcFsxXS5maXJzdF1bcFsxXS5zZWNvbmRdID0gdHJ1ZTsKCiAgICBmb3IgKGludCB0ID0gMDsgdCA8IE1BWDsgdCsrKQogICAgewogICAgICAgIHdoaWxlICghcS5lbXB0eSgpKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHJ5ID0gZ2V0PDA+KHEuZnJvbnQoKSk7CiAgICAgICAgICAgIGludCByeCA9IGdldDwxPihxLmZyb250KCkpOwogICAgICAgICAgICBpbnQgYnkgPSBnZXQ8Mj4ocS5mcm9udCgpKTsKICAgICAgICAgICAgaW50IGJ4ID0gZ2V0PDM+KHEuZnJvbnQoKSk7CiAgICAgICAgICAgIHEucG9wKCk7CgogICAgICAgICAgICBmb3IgKGludCB3YXkgPSAwOyB3YXkgPCA0OyB3YXkrKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgYm9vbCBnYW1lT3ZlclsyXSA9IHtmYWxzZSwgZmFsc2V9OyAvLyBpbmRleCAwIDogcmVkLCAxIDogYmx1ZQogICAgICAgICAgICAgICAgaW50IGlkeCA9IDA7IC8vIGlkeCA9IDEgOiByZWQgZmlyc3Qgc3RhcnQsIDAgOiBibHVlIGZpcnN0IHN0YXJ0CiAgICAgICAgICAgICAgICBpbnQgcnl5ID0gcnk7CiAgICAgICAgICAgICAgICBpbnQgcnh4ID0gcng7CiAgICAgICAgICAgICAgICBpbnQgYnl5ID0gYnk7CiAgICAgICAgICAgICAgICBpbnQgYnh4ID0gYng7CgogICAgICAgICAgICAgICAgLy8gZHksIGR4IOyInOyEnCA6IOychCwg7Jik66W47Kq9LCDslYTrnpgsIOyZvOyqvQogICAgICAgICAgICAgICAgLy8g6riw7Jq47Ja07KGM7J2EIOuVjCDruajqsITqs7UsIO2MjOuegOqztSDspJHsl5DshJwg64iE6rCAIOuovOyggCDquLDsmrjslrTsp4DripTsp4AKICAgICAgICAgICAgICAgIGlmICgod2F5ID09IDAgJiYgcnl5IDwgYnl5KSB8fCAod2F5ID09IDEgJiYgcnh4ID4gYnh4KSB8fCAod2F5ID09IDIgJiYgcnl5ID4gYnl5KSB8fCAod2F5ID09IDMgJiYgcnh4IDwgYnh4KSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpZHggPSAxOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjsgaSsrKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGlmIChpZHggPT0gMSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYm9hcmRbcnl5XVtyeHhdICE9ICcuJykgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByeXkgKz0gZHlbd2F5XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ4eCArPSBkeFt3YXldOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYm9hcmRbcnl5XVtyeHhdID09ICdPJykKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FtZU92ZXJbMF0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgICAgLy8g67K97JeQIOu2gOuUqu2emC4g7KCE7Jy866GcIOuhpOuwsQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByeXkgLT0gZHlbd2F5XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ4eCAtPSBkeFt3YXldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9hcmRbcnl5XVtyeHhdID0gJ1InOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBpZHggPSAxIC0gaWR4OwogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA9PSAwKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChib2FyZFtieXldW2J4eF0gIT0gJy4nKSBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5eSArPSBkeVt3YXldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnh4ICs9IGR4W3dheV07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChib2FyZFtieXldW2J4eF0gPT0gJ08nKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYW1lT3ZlclsxXSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAgICAvLyDrsr3sl5Ag67aA65Sq7Z6YLiDsoITsnLzroZwg66Gk67CxCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5eSAtPSBkeVt3YXldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnh4IC09IGR4W3dheV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2FyZFtieXldW2J4eF0gPSAnQic7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGlkeCA9IDEgLSBpZHg7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoZ2FtZU92ZXJbMF0gJiYgZ2FtZU92ZXJbMV0gPT0gZmFsc2UpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAJY291dCA8PCAnXG4nOwogICAgICAgICAgICAgICAgCWZvciAoaW50IG4gPSAwOyBuIDwgTjsgbisrKQogICAgICAgICAgICAgICAgCXsKICAgICAgICAgICAgICAgIAkJZm9yIChpbnQgbSA9IDA7IG0gPCBNOyBtKyspCiAgICAgICAgICAgICAgICAJCXsKICAgICAgICAgICAgICAgIAkJCWNvdXQgPDwgYm9hcmRbbl1bbV0gPDwgJyAnOwogICAgICAgICAgICAgICAgCQl9CiAgICAgICAgICAgICAgICAJCWNvdXQgPDwgJ1xuJzsKICAgICAgICAgICAgICAgIAl9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKGdhbWVPdmVyWzBdID09IGZhbHNlKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGJvYXJkW3J5eV1bcnh4XSA9ICcuJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoZ2FtZU92ZXJbMV0gPT0gZmFsc2UpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgYm9hcmRbYnl5XVtieHhdID0gJy4nOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChnYW1lT3ZlclsxXSA9PSBmYWxzZSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpZiAodmlzaXRlZFtyeXldW3J4eF1bYnl5XVtieHhdKSAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICB2aXNpdGVkW3J5eV1bcnh4XVtieXldW2J4eF0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIHEucHVzaChtYWtlX3R1cGxlKHJ5eSwgcnh4LCBieXksIGJ4eCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgCiAgICByZXR1cm4gMDsKfQoKaW50IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKICAgIGNvdXQudGllKDApOwoKICAgIGNpbiA+PiBOID4+IE07CiAgICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykKICAgIHsKICAgICAgICBzdHJpbmcgczsKICAgICAgICBjaW4gPj4gczsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHMuc2l6ZSgpOyBqKyspCiAgICAgICAgewogICAgICAgICAgICBpZiAoc1tqXSA9PSAnUicpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHBbMF0gPSBtYWtlX3BhaXIoaSwgaik7CiAgICAgICAgICAgICAgICBib2FyZFtpXVtqXSA9ICcuJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzZSBpZiAoc1tqXSA9PSAnQicpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHBbMV0gPSBtYWtlX3BhaXIoaSwgaik7CiAgICAgICAgICAgICAgICBib2FyZFtpXVtqXSA9ICcuJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgYm9hcmRbaV1bal0gPSBzW2pdOwogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8IEJGUygpIDw8ICdcbic7CgogICAgcmV0dXJuIDA7Cn0=