#include <cstdio>
#define inf 1000000000
using namespace std;
struct IIPair { int i, j; } st[10000], pr, pj, pos;
int rom[102][102];
int jul[102][102];
int nl, nc;
int lst, r;
int d[8][2] = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}, {1, 1}, {1, -1}, {-1, 1}, {-1, -1}};
void lee(int i, int j, int mat[102][102])
{
int k;
lst = 1;
r = 0;
st[0].i = i;
st[0].j = j;
mat[i][j] = 1;
while(lst > r)
{
i = st[r].i;
j = st[r].j;
for(k = 0; k < 8; k++)
{
if(mat[i + d[k][0]][j + d[k][1]] == 0)
{
mat[i + d[k][0]][j + d[k][1]] = mat[i][j] + 1;
st[lst].i = i + d[k][0];
st[lst++].j = j + d[k][1];
}
}
r++;
}
}
void waitNL()
{
char c;
do
{
fread(&c, 1, 1, stdin);
}while(c != '\n');
}
int main()
{
char c, newl = 0;
int i, j, tmin = 1000000000;
freopen("rj.in", "r", stdin);
freopen("rj.out", "w", stdout);
scanf("%d%d", &nl, &nc);
for(i = 1; i <= nl; i++)
{
if(newl == 0)
waitNL();
newl = 0;
for(j = 1; j <= nc && newl == 0; j++)
{
fread(&c, 1, 1, stdin);
switch(c)
{
case 'R':
pr.i = i;
pr.j = j;
break;
case 'J':
pj.i = i;
pj.j = j;
break;
case 'X':
rom[i][j] = inf;
jul[i][j] = inf;
break;
case '\n':
newl = 1;
break;
}
}
}
for(i = 0; i <= nl + 1; i++)
{
rom[i][0] = inf;
rom[i][nc + 1] = inf;
jul[i][0] = inf;
jul[i][nc + 1] = inf;
}
for(j = 0; j <= nc + 1; j++)
{
rom[0][j] = inf;
rom[nl + 1][j] = inf;
jul[0][j] = inf;
jul[nl + 1][j] = inf;
}
lee(pr.i, pr.j, rom);
lee(pj.i, pj.j, jul);
for(i = 1; i <= nl; i++)
{
for(j = 1; j <= nc; j++)
{
if(rom[i][j] == jul[i][j] && rom[i][j] != 0)
{
if(tmin > rom[i][j])
{
tmin = rom[i][j];
pos.i = i;
pos.j = j;
}
}
}
}
printf("%d %d %d", tmin, pos.i, pos.j);
return 0;
}