#include <algorithm>
#include <bitset>
#include <climits>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <ctime>
#include <deque>
#include <functional>
#include <iomanip>
#include <iostream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <vector>
using namespace std;
#define FOR(i, N) for(int i = 0; i < N; i++)
#define FOR1e(i, N) for(int i = 1; i <= N; i++)
#define REP(i, M, N) for(int i = M; i < N; i++)
#define REPe(i, M, N) for(int i = M; i <= N; i++)
#define sc(N) scanf("%d", &N)
#define scsc(M, N) scanf("%d %d", &M, &N)
#define scscsc(M, N, O) scanf("%d %d %d", &M, &N, &O)
#define all(s) s.begin(), s.end()
#define gt(s) getline(cin, s)
#define ms(a, v) memset(a, v, sizeof a)
#define mp make_pair
#define pb push_back
#define pq priority_queue
#define ss stringstream
typedef long long ll;
typedef pair< int , int > pii;
typedef vector< int > vi;
const int oo = 1 << 30 ;
const int MAX = 1e5 + 1 ;
const int MOD = 1e9 + 7 ;
int dr[ ] = { 0 , - 1 , 0 , 1 } ;
int dc[ ] = { 1 , 0 , - 1 , 0 } ;
inline int Pow( int b, int p) { if ( ! p) return 1 ; int sq = Pow( b, p >> 1 ) ; sq * = sq; if ( p & 1 ) sq * = b; return sq; }
inline int gcd( int a, int b) { if ( ! a) return b; return gcd( b % a, a) ; }
inline string toString( int x) { ss SS; SS << x; return SS.str ( ) ; }
int n, m;
int dp[ 55 ] [ 55 ] [ 105 ] [ 2 ] ;
vector < string> arr;
bool valid( int r, int c) {
return ( r < n && r >= 0 && c < m && c >= 0 && arr[ r] [ c] ! = '#' ) ;
}
bool solve( int r, int c, int k, bool alice) {
int & ret = dp[ r] [ c] [ k] [ alice] ;
if ( ret ! = - 1 )
return ret;
if ( alice) {
if ( ! k)
return ret = 0 ;
bool can = 0 ;
FOR( i, 4 ) {
int nr = r + dr[ i] , nc = c + dc[ i] ;
if ( valid( nr, nc) ) {
can = 1 ;
if ( arr[ nr] [ nc] == 'E' )
return ret = 1 ;
if ( solve( nr, nc, k - 1 , ! alice) ) {
return ret = 1 ;
}
}
}
if ( ! can)
return ret = 0 ;
}
else {
if ( ! k)
return ret = 1 ;
bool can = 0 ;
FOR( i, 4 ) {
int nr = r + dr[ i] , nc = c + dc[ i] ;
if ( valid( nr, nc) ) {
can = 1 ;
if ( arr[ nr] [ nc] == 'E' )
return ret = 0 ;
if ( solve( nr, nc, k - 1 , ! alice) ) {
return ret = 0 ;
}
}
}
if ( ! can)
return ret = 1 ;
}
}
class BoardEscapeDiv2 {
public :
string findWinner( vector < string> s, int k) {
n = s.size ( ) ; m = s[ 0 ] .size ( ) ;
arr = s;
ms( dp, - 1 ) ;
int r = 0 , c = 0 ;
FOR( i, n) {
FOR( j, m) {
if ( s[ i] [ j] == 'T' ) {
r = i;
c = j;
goto GOTO;
}
}
}
GOTO:
return ( solve( r, c, k, 1 ) ) ? "Alice" : "Bob" ;
}
} ;
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGJpdHNldD4KI2luY2x1ZGUgPGNsaW1pdHM+CiNpbmNsdWRlIDxjbWF0aD4KI2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGNzdHJpbmc+CiNpbmNsdWRlIDxjdGltZT4KI2luY2x1ZGUgPGRlcXVlPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPGlvbWFuaXA+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGxpc3Q+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxxdWV1ZT4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPHNzdHJlYW0+CiNpbmNsdWRlIDxzdGFjaz4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHZlY3Rvcj4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIEZPUihpLCBOKSBmb3IoaW50IGkgPSAwOyBpIDwgTjsgaSsrKQojZGVmaW5lIEZPUjFlKGksIE4pIGZvcihpbnQgaSA9IDE7IGkgPD0gTjsgaSsrKQojZGVmaW5lIFJFUChpLCBNLCBOKSBmb3IoaW50IGkgPSBNOyBpIDwgTjsgaSsrKQojZGVmaW5lIFJFUGUoaSwgTSwgTikgZm9yKGludCBpID0gTTsgaSA8PSBOOyBpKyspCiNkZWZpbmUgc2MoTikgc2NhbmYoIiVkIiwgJk4pCiNkZWZpbmUgc2NzYyhNLCBOKSBzY2FuZigiJWQgJWQiLCAmTSwgJk4pCiNkZWZpbmUgc2NzY3NjKE0sIE4sIE8pIHNjYW5mKCIlZCAlZCAlZCIsICZNLCAmTiwgJk8pCiNkZWZpbmUgYWxsKHMpIHMuYmVnaW4oKSwgcy5lbmQoKQojZGVmaW5lIGd0KHMpIGdldGxpbmUoY2luLCBzKQojZGVmaW5lIG1zKGEsIHYpIG1lbXNldChhLCB2LCBzaXplb2YgYSkKI2RlZmluZSBtcCBtYWtlX3BhaXIKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBwcSBwcmlvcml0eV9xdWV1ZQojZGVmaW5lIHNzIHN0cmluZ3N0cmVhbQoKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgcGFpcjxpbnQsIGludD4gcGlpOwp0eXBlZGVmIHZlY3RvcjxpbnQ+IHZpOwoKY29uc3QgaW50IG9vID0gMSA8PCAzMDsKY29uc3QgaW50IE1BWCA9IDFlNSArIDE7CmNvbnN0IGludCBNT0QgPSAxZTkgKyA3OwoKaW50IGRyW10gPSB7IDAsIC0xLCAwLCAxIH07CmludCBkY1tdID0geyAxLCAwLCAtMSwgMCB9OwoKaW5saW5lIGludCBQb3coaW50IGIsIGludCBwKSB7IGlmICghcCkgcmV0dXJuIDE7IGludCBzcSA9IFBvdyhiLCBwID4+IDEpOyBzcSAqPSBzcTsgaWYgKHAgJiAxKSBzcSAqPSBiOyByZXR1cm4gc3E7IH0KaW5saW5lIGludCBnY2QoaW50IGEsIGludCBiKSB7IGlmICghYSkgcmV0dXJuIGI7IHJldHVybiBnY2QoYiAlIGEsIGEpOyB9CmlubGluZSBzdHJpbmcgdG9TdHJpbmcoaW50IHgpIHsgc3MgU1M7IFNTIDw8IHg7IHJldHVybiBTUy5zdHIoKTsgfQoKaW50IG4sIG07CmludCBkcFs1NV1bNTVdWzEwNV1bMl07CnZlY3RvciA8c3RyaW5nPiBhcnI7Cgpib29sIHZhbGlkKGludCByLCBpbnQgYyl7CglyZXR1cm4gKHIgPCBuICYmIHIgPj0gMCAmJiBjIDwgbSAmJiBjID49IDAgJiYgYXJyW3JdW2NdICE9ICcjJyk7Cn0KCmJvb2wgc29sdmUoaW50IHIsIGludCBjLCBpbnQgaywgYm9vbCBhbGljZSl7CglpbnQgJnJldCA9IGRwW3JdW2NdW2tdW2FsaWNlXTsKCWlmIChyZXQgIT0gLTEpCgkJcmV0dXJuIHJldDsKCWlmIChhbGljZSl7CgkJaWYgKCFrKQoJCQlyZXR1cm4gcmV0ID0gMDsKCQlib29sIGNhbiA9IDA7CgkJRk9SKGksIDQpewoJCQlpbnQgbnIgPSByICsgZHJbaV0sIG5jID0gYyArIGRjW2ldOwoJCQlpZiAodmFsaWQobnIsIG5jKSl7CgkJCQljYW4gPSAxOwoJCQkJaWYgKGFycltucl1bbmNdID09ICdFJykKCQkJCQlyZXR1cm4gcmV0ID0gMTsKCQkJCWlmIChzb2x2ZShuciwgbmMsIGsgLSAxLCAhYWxpY2UpKXsKCQkJCQlyZXR1cm4gcmV0ID0gMTsKCQkJCX0KCQkJfQoJCX0KCQlpZiAoIWNhbikKCQkJcmV0dXJuIHJldCA9IDA7Cgl9CgllbHNlewoJCWlmICghaykKCQkJcmV0dXJuIHJldCA9IDE7CgkJYm9vbCBjYW4gPSAwOwoJCUZPUihpLCA0KXsKCQkJaW50IG5yID0gciArIGRyW2ldLCBuYyA9IGMgKyBkY1tpXTsKCQkJaWYgKHZhbGlkKG5yLCBuYykpewoJCQkJY2FuID0gMTsKCQkJCWlmIChhcnJbbnJdW25jXSA9PSAnRScpCgkJCQkJcmV0dXJuIHJldCA9IDA7CgkJCQlpZiAoc29sdmUobnIsIG5jLCBrIC0gMSwgIWFsaWNlKSl7CgkJCQkJcmV0dXJuIHJldCA9IDA7CgkJCQl9CgkJCX0KCQl9CgkJaWYgKCFjYW4pCgkJCXJldHVybiByZXQgPSAxOwoJfQp9CgpjbGFzcyBCb2FyZEVzY2FwZURpdjIgewpwdWJsaWM6CglzdHJpbmcgZmluZFdpbm5lcih2ZWN0b3IgPHN0cmluZz4gcywgaW50IGspIHsKCQluID0gcy5zaXplKCk7IG0gPSBzWzBdLnNpemUoKTsKCQlhcnIgPSBzOwoJCW1zKGRwLCAtMSk7CgkJaW50IHIgPSAwLCBjID0gMDsKCQlGT1IoaSwgbil7CgkJCUZPUihqLCBtKXsKCQkJCWlmIChzW2ldW2pdID09ICdUJyl7CgkJCQkJciA9IGk7CgkJCQkJYyA9IGo7CgkJCQkJZ290byBHT1RPOwoJCQkJfQoJCQl9CgkJfQoJCUdPVE86CgkJcmV0dXJuIChzb2x2ZShyLCBjLCBrLCAxKSkgPyAiQWxpY2UiIDogIkJvYiI7Cgl9Cn07Cg==