#include<iostream>
#include<queue>
#include<cstdio>
using namespace std;
const int INF=1000000;
int d[1005][1005];
int dx[4]= {1,0,-1,0};
int dy[4]= {0,1,0,-1};
char s[1005][1005];
int m,n,k;
int sx,sy,gx,gy;
typedef pair <int ,int >P;
int bfs()
{
queue<P> que;
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
d[i][j]==INF;
}
}
que.push(P(sx,sy));
d[sx][sy]=0;
while(que.size())
{
P p=que.front();
que.pop();
if(p.first==gx&&p.second==gy)
{
break;
}
for(int i=0; i<4; i++)
{
int nx=p.first+dx[i];
int ny=p.second+dy[i];
// cout << nx << ":" << ny << endl;
cout << que.size()<<" "<<m<<" "<<n<<endl;
if( nx>=0&&nx<m
&&ny>=0&&ny<n
&&s[nx][ny]!='X'
&&d[nx][ny]==INF)
{
que.push(P(nx,ny));
d[nx][ny]=d[p.first][p.second]+1;
}
}
}
return d[gx][gy];
}
int main()
{
cin >> m >> n >> k;
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
cin >> s[i][j];
if(s[i][j]=='S')
{
sx=i;
sy=j;
// cout << i <<" "<< j <<endl;
}
if(s[i][j]=='1')
{
gx=i;
gy=j;
// cout << i << " "<<j <<endl;
}
}
}
cout << bfs();
}
#include<queue>
#include<cstdio>
using namespace std;
const int INF=1000000;
int d[1005][1005];
int dx[4]= {1,0,-1,0};
int dy[4]= {0,1,0,-1};
char s[1005][1005];
int m,n,k;
int sx,sy,gx,gy;
typedef pair <int ,int >P;
int bfs()
{
queue<P> que;
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
d[i][j]==INF;
}
}
que.push(P(sx,sy));
d[sx][sy]=0;
while(que.size())
{
P p=que.front();
que.pop();
if(p.first==gx&&p.second==gy)
{
break;
}
for(int i=0; i<4; i++)
{
int nx=p.first+dx[i];
int ny=p.second+dy[i];
// cout << nx << ":" << ny << endl;
cout << que.size()<<" "<<m<<" "<<n<<endl;
if( nx>=0&&nx<m
&&ny>=0&&ny<n
&&s[nx][ny]!='X'
&&d[nx][ny]==INF)
{
que.push(P(nx,ny));
d[nx][ny]=d[p.first][p.second]+1;
}
}
}
return d[gx][gy];
}
int main()
{
cin >> m >> n >> k;
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
cin >> s[i][j];
if(s[i][j]=='S')
{
sx=i;
sy=j;
// cout << i <<" "<< j <<endl;
}
if(s[i][j]=='1')
{
gx=i;
gy=j;
// cout << i << " "<<j <<endl;
}
}
}
cout << bfs();
}