rt.
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m;
bool vis[30][30][5][10];
bool a[30][30];
int sx,sy,tx,ty;
struct Node{
int x,y,to,col,tim;
};
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
void bfs(){
queue<Node> q;
q.push({sx,sy,0,0,0});
vis[sx][sy][0][0]=1;
while(!q.empty()){
Node tmp=q.front();
if(tmp.x==tx&&tmp.y==ty&&tmp.col==0){
cout<<"minimum time = "<<tmp.tim<<" sec\n";
return ;
}
for(int i=-1;i<=1;++i){
Node nxt=tmp;
if(i!=0){
nxt.to=(nxt.to+i+4)%4;
}else{
nxt.x+=dx[nxt.to];
nxt.y+=dy[nxt.to];
nxt.col=(nxt.col+1)%5;
}nxt.tim+=1;
if(nxt.x<1||nxt.x>n||nxt.y<1||nxt.y>m||a[nxt.x][nxt.y]=='#'||vis[nxt.x][nxt.y][nxt.to][nxt.col]==1){
continue;
}
q.push(nxt);
vis[nxt.x][nxt.y][nxt.to][nxt.col]=1;
}
}
cout<<"destination not reachable\n";
}
signed main(){
int T=0;
char c;
while(cin>>n>>m){
++T;
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
cin>>c;
if(c=='S') sx=i,sy=j;
if(c=='#') a[i][j]=1;
if(c=='T') tx=i,ty=j;
}
}
cout<<"Case #"<<T<<endl;
bfs();
}
return 0;
}