#include <bits/stdc++.h>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int dx[] = {-1, -1, 0, 1, 1, 1, 0, -1},
dy[] = {0, 1, 1 ,1, 0, -1, -1, -1};
int n,m,cnt=1,h[102][102],is,js,ifi,jfi,ro[102][102],jl[102][102];
bool inmat(int i, int j){
return (i >= 1 && i <= n && j >= 1 && j <= m);}
void citire();
void afisare();
void lee(int is, int js, int ifi, int jfi, int h[][102]);
void constructie(int is, int js, int ifi, int jfi);
int main()
{
citire();
//afisare();
lee(is, js, ifi, jfi, ro);
lee(ifi, jfi, is, js, jl);
constructie(is, js, ifi, jfi);
return 0;
}
void citire()
{
f >> n >> m;
char c;
for(int i=0;i<=n+1;i++)
h[i][0]=h[i][m+1]='X';
for(int i=0;i<=m+1;i++)
h[0][i]=h[n+1][i]='X';
f.get(c);
for (int i=1;i<=n;i++)
{
for (int j=1;j<=m;j++)
{
f.get(c);
if(c == 'X'){
ro[i][j] = -1; jl[i][j] = -1;
}
else if(c == 'R'){
is = i; js = j;
}
else if(c == 'J'){
ifi = i; jfi = j;
}
}
f.get(c);
}
}
void afisare()
{
for (int i=0;i<=n+1;i++)
{
for (int j=0;j<=m+1;j++)
g << h[i][j];
g << "\n";
}
}
void lee(int is, int js, int ifi, int jfi, int h[][102])
{
queue<pair<int,int>> q;
q.push(make_pair(is,js));
while(q.empty() == 0){
int i = q.front().first,
j = q.front().second;
for(int d = 0; d < 8; d++){
int inou = i + dx[d],
jnou = j + dy[d];
if(inmat(inou, jnou) == 1 && h[inou][jnou] == 0 ){
h[inou][jnou] = h[i][j] + 1;
q.push(make_pair(inou, jnou));
}
}
q.pop();
}
h[is][js] = 0;
}
void constructie(int is, int js, int ifi, int jfi){
int minim = 2147483647, a, b;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
if(ro[i][j] != -1 && ro[i][j] != 0 && ro[i][j] == jl[i][j] && ro[i][j] < minim){
minim = ro[i][j];
a = i;
b = j;
}
}
}
g << minim + 1 << " " << a << " " << b;
}