#include <bits/stdc++.h>
#define DIMMAX 102
#define FOR(i, a, b) for(int i = a; i <= b; i++)
using namespace std;
int n, m;
int ro[DIMMAX][DIMMAX], ju[DIMMAX][DIMMAX];
int dl[]= {0,0,-1,1,1,-1,-1,1}, dc[]= {1,-1,0,0,1,1,-1,-1};
int xr, yr, xj, yj;
int b[DIMMAX][DIMMAX];
char ch;
ofstream fout("rj.out");
queue <pair< int, int> > coada;
bool ok(int i , int j)
{
if (i < 1 || i > n || j < 1 || j > m)
return false;
else
return true;
}
void citire()
{
ifstream fin("rj.in");
int i, j;
fin >> n >> m;
fin.get();
FOR(i, 1, n)
{
FOR(j, 1, m)
{
fin.get(ch);
if(ch == 'X')
ro[i][j] = ju[i][j] = -1;
if(ch == 'R')
{
xr = i;
yr = j;
}
if(ch == 'J')
{
xj = i;
yj = j;
}
}
fin.get(ch);
}
fin.close();
}
void Lee(int x, int y, int h[][DIMMAX])
{
int dx, dy, dir, i, j;
coada.push(make_pair(x, y));
h[x][y] = 1;
while(!coada.empty())
{
i = coada.front().first;
j = coada.front().second;
coada.pop();
FOR(dir, 0, 7)
{
dx = i + dl[dir];
dy = j + dc[dir];
if(h[dx][dy] == 0 && ok(dx, dy) == true)
{
h[dx][dy] = h[i][j] + 1;
coada.push(make_pair(dx, dy));
}
}
}
}
int main()
{
int i, j, tmin = DIMMAX * DIMMAX, x, y;
citire();
Lee(xr, yr, ro);
Lee(xj, yj, ju);
FOR(i, 1, n)
FOR(j, 1, m)
if(ro[i][j] == ju[i][j] && ro[i][j] > 0 && ro[i][j] < tmin)
{
tmin = min(ro[i][j], tmin);
x = i;
y = j;
}
fout << tmin << " " << x << " " << y << '\n';
fout.close();
}