#include <stdio.h>
#include <string.h>
#define NMAX 105
short map[NMAX][NMAX];
int huge tj[NMAX][NMAX], tr[NMAX][NMAX];
int n, m;
int jx, jy, rx, ry;
void read()
{
char s[NMAX];
int i, j;
scanf("%d %d\n", &n, &m);
for(i = 1; i <= n; ++i)
for(j = 1; j <= m; ++j)
tj[i][j] = tr[i][j] = 32000;
for(i = 1; i <= n; ++i)
{
fgets(s+1, NMAX, stdin);
for(j = 1; j <= m; ++j)
if(s[j] == ' ')
map[i][j] = 1;
else if(s[j] == 'R')
map[i][j] = 2, tr[i][j] = 0, rx = i, ry = j;
else if(s[j] == 'J')
map[i][j] = 3, tj[i][j] = 0, jx = i, jy = j;
else
map[i][j] = 0;
}
}
inline int MIN(int a, int b) { return (a < b) ? (a) : (b); }
void bf1()
{
int dx[] = {-1, 0, 1, 0}, dy[] = {0, 1, 0, -1};
int qx[NMAX*NMAX], qy[NMAX*NMAX];
int inc, sf;
int x, y, k, i, j;
inc = sf = 1;
qx[inc] = jx;
qy[inc] = jy;
while(inc <= sf)
{
i = qx[inc];
j = qy[inc++];
for(k = 0; k < 4; ++k)
if(map[ i-dx[k] ][ j-dy[k] ])
if(tj[ i-dx[k] ][ j-dy[k] ] > tj[i][j]+1)
{
tj[ i-dx[k] ][ j-dy[k] ] = tj[i][j]+1;
qx[++sf] = i-dx[k];
qy[sf] = j-dy[k];
}
}
}
void bf2()
{
int dx[] = {-1, 0, 1, 0}, dy[] = {0, 1, 0, -1};
int qx[NMAX*NMAX], qy[NMAX*NMAX];
int inc, sf;
int x, y, k, i, j;
inc = sf = 1;
qx[inc] = rx;
qy[inc] = ry;
while(inc <= sf)
{
i = qx[inc];
j = qy[inc++];
for(k = 0; k < 4; ++k)
if(map[ i-dx[k] ][ j-dy[k] ])
if(tr[ i-dx[k] ][ j-dy[k] ] > tr[i][j]+1)
{
tr[ i-dx[k] ][ j-dy[k] ] = tr[i][j]+1;
qx[++sf] = i-dx[k];
qy[sf] = j-dy[k];
}
}
}
void find()
{
int t = 0;
int i, j;
while(1)
{
++t;
for(i = 1; i <= n; ++i)
for(j = 1; j <= m; ++j)
if(tj[i][j] == t && tj[i][j] == tr[i][j])
{
printf("%d %d %d\n", t, i, j);
return ;
}
}
}
int main()
{
int i, j;
freopen("rj.in", "r", stdin);
freopen("rj.out", "w", stdout);
read();
bf1();
bf2();
/*
for(i = 1; i <= n; ++i, printf("\n"))
for(j = 1; j <= m; ++j)
printf("%d ", tr[i][j]);
*/
find();
return 0;
}