#include<iostream>
#include<queue>
#include<algorithm>
#include<map>
#include<string.h>
#include<math.h>
#include<stdio.h>
#include <iomanip>
#include <stack>
#include <vector>
#include <sstream>
using namespace std;
bool used[31][31][31];
vector<vector<string>>graph;
int level,row,column;
int dl[]={0,0,0,0,1,-1};
int dr[]={-1,1,0,0,0,0};
int dc[]={0,0,-1,1,0,0};
struct station
{
int L;
int R;
int C;
int num;
station(int x, int y, int z, int NUM)
{
L=x;
R=y;
C=z;
num=NUM;
}
};
void Bfs(int a,int b, int c)
{
queue<station> que;
que.push(station(a,b,c,0));
memset(used,false,sizeof(used));
used[a][b][c]=true;
int levels,rows,columns;
int j,k,l;
while(!que.empty())
{
station temp=que.front();
que.pop();
j=temp.L;
k=temp.R;
l=temp.C;
if(graph[j][k][l]=='E')
{
printf("Escaped in %d minute(s).\n", temp.num);
return;
}
for(int i=0;i<6;i++)
{
levels=j+dl[i];
rows=k+dr[i];
columns=l+dc[i];
if(levels>=0 && levels<level && rows>=0 && rows<row && columns>=0 && columns<column && !used[levels][rows][columns] && graph[levels][rows][columns]!='#')
{
que.push(station(levels,rows,columns,temp.num + 1));
used[levels][rows][columns]=true;
}
}
}
printf("Trapped!\n");
return;
}
int main(){
vector<string> v_str;
string s;
int l,r,c;
while(scanf("%d%d%d", &level, &row, &column)==3 && (level || row||column))
{
{
graph.clear();
for(int i=0;i<level;i++)
{
v_str.clear();
for(int j=0;j<row;j++)
{
cin>>s;
v_str.push_back(s);
}
graph.push_back(v_str);
}
for(int i=0;i<level;i++)
for(int j=0;j<row;j++)
for(int k=0;k<column;k++)
if(graph[i][j][k]=='S')
{
l = i;
r= j;
c= k;
goto exit;
}
}
exit:
Bfs(l,r,c);
}
return 0;
}