#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
ifstream in("rj.in");
ofstream out("rj.out");
int mp[101][101], rm[101][101], jl[101][101], mi, done, am, m, n;
void romeo( int i, int j, int d ) {
if ( rm[i][j+1] == 0 && j+1 < m ) {
rm[i][j+1] = d;
romeo( i, j+1, d+1 );
}
if ( rm[i+1][j+1] == 0 && j+1 < m && i+1 < n ) {
rm[i+1][j+1] = d;
romeo( i+1, j+1, d+1 );
}
if ( rm[i+1][j] == 0 && i+1 < n ) {
rm[i+1][j] = d;
romeo( i+1, j, d+1 );
}
if ( rm[i+1][j-1] == 0 && i+1 < n && j-1 >= 0 ) { // 4
rm[i+1][j-1] = d;
romeo( i+1, j-1, d+1 );
}
if ( rm[i][j-1] == 0 && j-1 >= 0 ) {
rm[i][j-1] = d;
romeo( i, j-1, d+1 );
}
if ( rm[i-1][j-1] == 0 && i-1 >= 0 && j-1 >= 0 ) { //6
rm[i-1][j-1] = d;
romeo( i-1, j-1, d+1 );
}
if ( rm[i-1][j] == 0 && i-1 >= 0 ) {
rm[i-1][j] = d;
romeo( i-1, j, d+1 );
}
if ( rm[i-1][j+1] == 0 && i-1 >= 0 && j+1 < m ) {
rm[i-1][j+1] = d;
romeo( i-1, j+1, d+1 );
}
}
void julieta( int i, int j, int d ) { // YYEEEEEESSSSSSSSS
if ( jl[i][j+1] == 0 && j+1 < m ) {
jl[i][j+1] = d;
if ( jl[i][j+1] == rm[i][j+1] && jl[i][j+1] < mi ) {
mi = jl[i][j+1];
done = i;
am = j+1;
}
julieta( i, j+1, d+1 );
}
if ( jl[i+1][j+1] == 0 && j+1 < m && i+1 < n ) {
jl[i+1][j+1] = d;
if ( jl[i+1][j+1] == rm[i+1][j+1] && jl[i+1][j+1] < mi ) {
mi = jl[i+1][j+1];
done = i+1;
am = j+1;
}
julieta( i+1, j+1, d+1 );
}
if ( jl[i+1][j] == 0 && i+1 < n ) {
jl[i+1][j] = d;
if ( jl[i+1][j] == rm[i+1][j] && jl[i+1][j] < mi ) {
mi = jl[i+1][j];
done = i+1;
am = j;
}
julieta( i+1, j, d+1 );
}
if ( jl[i+1][j-1] == 0 && i+1 < n && j-1 >= 0 ) {
jl[i+1][j-1] = d;
if ( jl[i+1][j-1] == rm[i+1][j-1] && jl[i+1][j-1] < mi ) {
mi = jl[i+1][j-1];
done = i+1;
am = j-1;
}
julieta( i+1, j-1, d+1 );
}
if ( jl[i][j-1] == 0 && j-1 >= 0 ) {
jl[i][j-1] = d;
if ( jl[i][j-1] == rm[i][j-1] && jl[i][j-1] < mi ) {
mi = jl[i][j-1];
done = i;
am = j-1;
}
julieta( i, j-1, d+1 );
}
if ( jl[i-1][j-1] == 0 && i-1 >= 0 && j-1 >= 0 ) {
jl[i-1][j-1] = d;
if ( jl[i-1][j-1] == rm[i-1][j-1] && jl[i-1][j-1] < mi ) {
mi = jl[i-1][j-1];
done = i-1;
am = j-1;
}
julieta( i-1, j-1, d+1 );
}
if ( jl[i-1][j] == 0 && i-1 >= 0 ) {
jl[i-1][j] = d;
if ( jl[i-1][j] == rm[i-1][j] && jl[i-1][j] < mi ) {
mi = jl[i-1][j];
done = i-1;
am = j;
}
julieta( i-1, j, d+1 );
}
if ( jl[i-1][j+1] == 0 && i-1 >= 0 && j+1 < m ) {
jl[i-1][j+1] = d;
if ( jl[i-1][j+1] == rm[i-1][j+1] && jl[i-1][j+1] < mi ) {
mi = jl[i-1][j+1];
done = i-1;
am = j+1;
}
julieta( i-1, j+1, d+1 );
}
}
struct art{
int x, y;
};
art k1, k2;
int main()
{
mi = 1000000;
char c[101];
int i, j;
in >> n >> m;
in.getline(c, 101);
for ( i = 0; i < n; i++ ) {
in.getline(c, 101);
for ( j = 0; j < m; j++ ) {
if ( c[j] == 'X' ) {
mp[i][j] = jl[i][j] = rm[i][j] = -1;
}
else if ( c[j] == 'J' ) {
k2.x = i;
k2.y = j;
mp[i][j] = jl[i][j] = rm[i][j] = -1;
}
else if ( c[j] == 'R' ) {
k1.x = i;
k1.y = j;
mp[i][j] = jl[i][j] = rm[i][j] = -1;
}
}
}
romeo( k1.x, k1.y, 1);
julieta( k2.x, k2.y, 1);
out << mi << " " << done+1 << " " << am+1;
return 0;
}