#include <fstream>
#include <queue>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m,xj,yj,xr,u,yr,R[102][102],J[102][102];
int dlin[9]={-1, -1, -1, 0, 0, 1, 1, 1};
int dcol[9]={-1, 0, 1, -1, 1, -1, 0, 1};
queue<pair<int, int> >c;
void citire()
{int j,i;
char l[102];
fin>>n>>m;
fin.getline(l,100);
for(i=0; i<n; i++)
{fin.getline(l,101);
for(j=0; j<m; j++)
{if(l[j] == 'X')
{R[i][j]=J[i][j] = -1; }
if(l[j] == 'J')
{xj=i;
yj=j;
}
if(l[j] == 'R')
{xr=i;
yr=j;
}}
}
}
void LEER( )
{
int i,xn,yn,x,y;
c.push(make_pair(xr, yr));
R[xr][yr] = 1;
while(!c.empty())
{x = c.front().first;
y = c.front().second;
for(i=0; i<8; i++)
{ xn = x+dlin[i];
yn = y+dcol[i];
if(!R[xn][yn] && xn<n && xn>=0 && yn<m && yn>=0)
{
R[xn][yn]=1+R[x][y];
c.push(make_pair(xn, yn));
}
}
c.pop();
}
}
void LEEJ( )
{
int i,xn,yn,x,y;
c.push(make_pair(xj, yj));
J[xj][yj] = 1;
while(!c.empty())
{x = c.front().first;
y = c.front().second;
for(i=0; i<8; i++)
{ xn = x+dlin[i];
yn = y+dcol[i];
if(!J[xn][yn] && xn<n && xn>=0 && yn<m && yn>=0)
{
J[xn][yn]=1+J[x][y];
c.push(make_pair(xn, yn));
}
}
c.pop();
}
}
int main()
{citire();
int XF,YF,i,j, dmin=2000000;
LEER();
LEEJ();
for(i=0; i<n; i++)
for(j=0; j<m; j++)
{if(R[i][j]>0 && R[i][j] == J[i][j] && J[i][j]<dmin)
{dmin=R[i][j];
XF=i;
YF=j;
}
}
fout<<dmin<<' '<<XF+1<<' '<<YF+1;
fin.close();
fout.close();
return 0;
}