#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
const int N = 110;
char g[N][N][N];
int dist[N][N][N];
int l,r,c;//层 行列
int dx[6] = {1, -1, 0, 0, 0, 0};
int dy[6] = {0, 0, 1, -1, 0, 0};
int dz[6] = {0, 0, 0, 0, 1, -1};
struct Node
{
int x,y,z;
};
int bfs(Node begin,Node end)
{
memset(dist,-1,sizeof dist);
queue<Node> q;
dist[begin.x][begin.y][begin.z] = 0;
q.push(begin);
while(q.size())
{
auto t = q.front();
q.pop();
for(int i=0;i<6;i++)
{
int x=t.x+dx[i], y=t.y+dy[i], z=t.z+dz[i];
if(x<0 || x>=l || y<0 || y>=r || z<0 || z>=c || g[x][y][z] == '#') continue;
if(dist[x][y][z] != -1) continue;
dist[x][y][z] = dist[t.x][t.y][t.z]+1;
if(end.x == x && end.y == y && end.z == z)
return dist[x][y][z];
if(g[x][y][z] == '.') q.push({x,y,z});
}
}
return -1;
}
int main()
{
while(scanf("%d%d%d",&l,&r,&c),l && r && c)
{
Node begin,end;
for (int i=0;i<l;i++)
for (int j=0;j<r;j ++ )
{
scanf("%s", g[i][j]);
for(int k= 0;k<c;k ++ )
{
char c = g[i][j][k];
if (c == 'S') begin = {i, j, k};
else if (c == 'E') end = {i, j, k};
}
}
int ans=bfs(begin,end);
if(ans==-1) printf("Trapped!\n");
else printf("Escaped in %d minute(s).\n",ans);
}
return 0;
}