#include<bits/stdc++.h>
using namespace std;
int n,m,cx[]={0,1,0,-1},cy[]={1,0,-1,0},lmin=114514;
char mp[105][105];
bool vis[105][105];
void f(int cnt,int x,int y){
if(cnt>=lmin)return;
if(mp[x][y]=='T'){
lmin=min(lmin,cnt);
return;
}
int tx,ty;
for(int i=0;i<4;i++){
tx=x+cx[i];
ty=y+cy[i];
if(tx>=0 && tx<n && ty>=0 && ty<m && mp[tx][ty]!='*' && !vis[tx][ty]){
vis[tx][ty]=1;
f(cnt+1,tx,ty);
vis[tx][ty]=0;
}
}
}
int main(){
cin>>n>>m;
int sx,sy;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>mp[i][j];
if(mp[i][j]=='S'){
sx=i;
sy=j;
}
}
}
f(0,sx,sy);
if(lmin!=114514)printf("%d",lmin);
else printf("-1");
return 0;
}