#include<iostream>
#include<cstring>
#include<string>
using namespace std;
string s[1001];
int n,m,a[1001][1001],v,w,h[100001][4],dx[5]={0,-1,0,1,0},dy[5]={0,0,1,0,-1};
void bfs(int x,int y)
{
int head=0,tail=1,nx,ny,i;
h[1][1]=x;
h[1][2]=y;
h[1][3]=0;
while(head<tail)
{
head++;
for(i=1;i<=4;i++)
{
nx=h[head][1]+dx[i];
ny=h[head][2]+dy[i];
if(nx>=1&&nx<=m&&ny>=1&&ny<=n&&a[nx][ny]==-1)
{
tail++;
h[tail][1]=nx;
h[tail][2]=ny;
h[tail][3]=h[head][3]+1;
a[nx][ny]=h[tail][3];
}
}
}
}
int main()
{
memset(a,-1,sizeof(a));
int i,j,x,y;
cin>>n>>m;
for(i=1;i<=n;i++)
{
cin>>s[i];
for(j=0;j<m;j++)
{
if(s[i][j]=='#')
a[i][j+1]=0;
if(s[i][j]=='S')
{
x=i;
y=j+1;
a[i][j+1]=0;
}
if(s[i][j]=='T')
{
v=i;
w=j+1;
}
}
}
bfs(x,y);
cout<<a[v][w]<<endl;
return 0;
}
1254