#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
const int dx[] = {-1, -1, 0, 1, 1, 1, 0, -1};
const int dy[] = {0, 1, 1, 1, 0, -1, -1, -1};
#define Nmax 101
void citire(int &n, int &m, int R[][Nmax], int J[][Nmax], int &lr, int &cr, int &lj, int &cj)
{
int i, j;
char linie[Nmax];
ifstream f("rj.in");
f >> n >> m;
f.get();
for(i = 1; i <= n; i++)
{
f.getline(linie, Nmax, '\n');
for(j = 0; j < m; j++)
{
if(linie[j] == 'R')
{
lr = i;
cr = j + 1;
J[lr][cr] = 0;
}
if(linie[j] == 'J')
{
lj = i;
cj = j + 1;
R[lj][cj] = 0;
}
if(linie[j] == '#')
{
R[i][j + 1] = 0;
J[i][j + 1] = 0;
}
if(linie[j] == 'X')
{
R[i][j + 1] = -1;
J[i][j + 1] = -1;
}
}
}
f.close();
}
int bune(int ii, int jj, int n, int m)
{
return((ii >= 1 && ii <= n) && (jj >= 1 && jj <= m));
}
void lee(int n, int m, int R[][Nmax], int lr, int cr)
{
int cx[10000], cy[10000], pi, ps, ii, jj, k;
cx[0] = lr;
cy[0] = cr;
R[lr][cr] = 1;
pi = 0;
ps = 0;
while(pi <= ps)
{
for(k = 0; k < 8; k++)
{
ii = cx[pi] + dx[k];
jj = cy[pi] + dy[k];
if(bune(ii, jj, n, m))
if(R[ii][jj] == 0)
{
R[ii][jj] = R[cx[pi]][cy[pi]] + 1;
ps++;
cx[ps] = ii;
cy[ps] = jj;
}
}
pi++;
}
}
void min_afis(int n, int m, int R[][Nmax], int J[][Nmax])
{
int i, j, minn, ii, jj;
minn = 10001;
for(i = 1; i <= n; i++)
for(j = 1; j <= m; j++)
if(R[i][j] == J[i][j])
if(R[i][j] > 0)
if(R[i][j] < minn)
{
minn = R[i][j];
ii = i;
jj = j;
}
ofstream g("rj.out");
g << minn << " " << ii << " " << jj;
g.close();
}
int main()
{
int R[Nmax][Nmax], J[Nmax][Nmax], n, m, lr, cr, lj, cj;
citire(n, m, R, J, lr, cr, lj, cj);
lee(n, m, R, lr, cr);
lee(n, m, J, lj, cj);
min_afis(n, m, R, J);
return 0;
}