#include<stdio.h>
#include<string.h>
long d1[4] = {-1, 0, 1, 0};
long d2[4] = {0, 1, 0, -1};
long n, m, rx, ry, jx, jy, i, j, pas, min = 900, xx, yy;
short rviz[101][101], jviz[101][101], a[101][101];
char x;
void lee(long x, long y, long pas, short viz[101][101])
{
for (long i = 0; i <= 3; i ++)
{
long ii = x + d1[i];
long jj = y + d2[i];
if (ii > 0 && ii <= n && jj > 0 && jj <= m)
if (a[ii][jj] == 0 && viz[ii][jj] == 0)
{
viz[ii][jj] = pas;
lee(ii, jj, pas + 1, viz);
}
}
}
int main()
{
freopen("1-rj.in","r",stdin);
freopen("rj.out","w",stdout);
char t[1010];
scanf("%ld %ld\n", &n, &m);
for (i = 1; i <= n; i++)
{
gets(t+1);
for(j=1;j<=strlen(t+1);j++)
if (t[j] == 'R')
{
rx = i;
ry = j;
}
else if (t[j] == 'J')
{
jx = i;
jy = j;
}
else if (t[j] == 'X') a[i][j] = 1;
}
rviz[rx][ry] = 1;
jviz[jx][jy] = 1;
lee(rx, ry, 2, rviz);
lee(jx, jy, 2, jviz);
for (i = 1; i <= n; i ++)
for (j = 1; j <= m; j ++)
{
if (rviz[i][j] == jviz[i][j] && rviz[i][j] != 0 && rviz[i][j] < min)
{
min = rviz[i][j];
xx = i;
yy = j;
}
}
printf("%ld %ld %ld\n", min, xx, yy);
return 0;
}