#include <stdio.h>
#define NMax 105
#define INF 1000000000
FILE *fin, *fout;
long n, m, rm[NMax][NMax], jm[NMax][NMax];
char a[NMax][NMax];
long dx[8] = {-1, 0, 1, 1, 1, 0, -1, -1};
long dy[8] = {-1, -1, -1, 0, 1, 1, 1, 0};
void go(long c[NMax][NMax], long x, long y)
{
long i;
for (i = 0; i < 8; i++)
{
if (x + dx[i] >= 0 && x + dx[i] < n && y + dy[i] >= 0 && y + dy[i] < m)
{
if (a[x+dx[i]][y+dy[i]] != 'X' && c[x+dx[i]][y+dy[i]] > c[x][y] + 1)
{
c[x+dx[i]][y+dy[i]] = c[x][y] + 1;
go(c, x+dx[i], y+dy[i]);
}
}
}
}
int main()
{
int i, j, tmin, xmin, ymin;
fin = fopen("rj.in", "rt");
fout = fopen("rj.out", "wt");
fscanf(fin, "%ld %ld\n", &n, &m);
for (i = 0; i < n; i++)
fgets(a[i], NMax, fin);
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
rm[i][j] = INF;
jm[i][j] = INF;
}
}
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
if (a[i][j] == 'R')
{
rm[i][j] = 0;
go(rm, i, j);
}
if (a[i][j] == 'J')
{
jm[i][j] = 0;
go(jm, i, j);
}
}
}
tmin = INF;
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
if (rm[i][j] == jm[i][j] && tmin > rm[i][j])
{
tmin = rm[i][j];
xmin = i;
ymin = j;
}
}
}
fprintf(fout, "%ld %ld %ld\n", tmin + 1, xmin + 1, ymin + 1);
return 0;
}