#include <fstream>
#include <queue>
#define POM -1
using namespace std;
ifstream cin("rj.in");
ofstream cout("rj.out");
queue<pair<int, int> > q;
const int MAX =105;
int n, m;
int ro[MAX][MAX], ju[MAX][MAX];
int xj, yj, xr, yr;
int dx[]={ 0, 1, -1, 0, 1, 1, -1, -1};
int dy[]={-1, 0, 0, 1, -1, 1, 1, -1};
void lee(int x, int y, int a[][MAX])
{
q.push({x, y});
a[x][y] = 1;
while(!q.empty())
{
x = q.front().first;
y = q.front().second;
q.pop();
for(int d=0; d<8; ++d)
if(a[ x+dx[d] ][ y+dy[d] ] == 0)
{
q.push({x+dx[d], y+dy[d]});
a[ x+dx[d] ][ y+dy[d] ] = 1 + a[x][y];
}
}
}
int main()
{
cin>>n>>m;
cin.get();
for(int i=1; i<=n; ++i)
{
char s[MAX];
cin.getline(s+1, MAX - 1);
for(int j=1; s[j]; ++j)
{
if(s[j] == 'X')
ro[i][j] = ju[i][j] = POM;
if(s[j] == 'R'){xr = i; yr = j;}
if(s[j] == 'J'){xj = i; yj = j;}
}
ro[i][0] = ro[i][m+1] = ju[i][0] = ju[i][m+1] = POM;
}
for(int i=0; i<=m+1; ++i)
ro[0][i] = ju[0][i] = ro[n+1][i] = ju[n+1][i] = POM;
lee(xr, yr, ro);
lee(xj, yj, ju);
int x, y, mini = MAX*MAX;
for(int i=1; i<=n; ++i)
for(int j=1; j<=m; ++j)
if(ro[i][j] > 0 and ro[i][j] == ju[i][j] and ro[i][j] < mini)
{
mini = ro[i][j];
x = i;
y = j;
}
cout<<mini<<' '<<x<<' '<<y;
return 0;
}