#include <fstream>
#include <queue>
#include <cstring>
using namespace std;
ifstream fin ("rj.in");
ofstream fout ("rj.out");
const int di[8] = {-1, 1, 0, 0, -1, 1, 1, -1};
const int dj[8] = {0, 0, 1, -1, 1, 1, -1, -1};
int drom[105][105], djul[105][105];
int n, m, i, j, i2, j2, dir, x1, x2, y1, y2, tmin, xmin, ymin;
char c, mat[105][105];
queue < pair<int, int> > Q;
bool isOK (int i, int j)
{
if (i < 1 || j < 1 || i > n || j > n)
return false;
if (mat[i][j] != ' ')
return false;
return true;
}
void Lee(int x0, int y0, int drum[105][105])
{
int i, j, i2, j2, dir;
drum[x0][y0] = 1;
Q.push({x0, y0});
for (i=1; i<=n; i++)
for (j=1; j<=m; j++)
drum[i][j]= 0;
while (!Q.empty()){
i = Q.front().first;
j = Q.front().second;
Q.pop();
for (dir=0; dir<8; dir++){
i2 = i + di[dir];
j2 = j + dj[dir];
if (isOK(i2, j2) && drum[i2][j2] == 0){
drum[i2][j2] = drum[i][j] + 1;
Q.push({i2, j2});
}
}
}
}
int main()
{
fin >> n >> m;
for (i=1; i<=m; i++)
mat[0][i] = mat[n+1][i] = 'X';
for (i=1; i<=n; i++)
mat[i][0] = mat[i][m+1] = 'X';
fin.get(c);
for (i=1; i<=n; i++){
for (j=1; j<=m; j++){
fin.get(c);
mat[i][j] = c;
if (mat[i][j] == 'R'){
x1 = i;
y1 = j;
mat[i][j] = ' ';
}
if (mat[i][j] == 'J'){
x2 = i;
y2 = j;
mat[i][j] = ' ';
}
}
fin.get(c);
}
Lee(x1, y1, drom);
Lee(x2, y2, djul);
tmin = 105*105;
for (i=1; i<=n; i++){
for (j=1; j<=m; j++){
if (drom[i][j] == djul[i][j]){
if (drom[i][j] < tmin && drom[i][j] != 0){
tmin = drom[i][j];
xmin = i;
ymin = j;
}
}
}
}
fout << tmin + 1 << " " << xmin << " " << ymin;
return 0;
}