#include <bits/stdc++.h>
using namespace std;

#define REP(i, n) for(int i = 0; i < (n); i++)
#define ALL(a) (a).begin(),(a).end()
#define SORT(a) sort((a).begin(),(a).end())
#define RSORT(a) sort((a).rbegin(),(a).rend())
#define ll long long
#define pb(a) push_back(a)

#define PRINTV(v) {for(ll deB=0; deB<(v).size(); deB++){cout << (v)[deB] << " ";}cout << endl;}

int main(){

	ll H,W;
	cin >> H >> W;
	vector< vector<ll> > M(H+1, vector<ll>(W+1, 0));
	vector< vector<ll> > T(H+1, vector<ll>(W+1, 0));
	//vector< vector<ll> > A(H+1, vector<ll>(W+1, 0));
	REP(y,H){
		string S;
		cin >> S;
		REP(x,W){
			if(S[x] == '+') M[y][x] = 1;
			else M[y][x] = -1;
			if((x+y)%2==0) M[y][x] = -M[y][x];
		}
	}
	M[0][0] = 0;

	for(int y=H-2; y>=0; y--){
		T[y][W-1] = T[y+1][W-1] + M[y][W-1];
	}
	for(int x=W-2; x>=0; x--){
		T[H-1][x] = T[H-1][x+1] + M[H-1][x];
	}
	for(int y=H-2; y>=0; y--){
		for(int x=W-2; x>=0; x--){
			if((x+y)%2==0){
				T[y][x] = max(T[y+1][x], T[y][x+1]) + M[y][x];
			}else{
				T[y][x] = min(T[y+1][x], T[y][x+1]) + M[y][x];
			}
		}
	}

	ll ret = T[0][0] + M[H-1][W-1];

	if(ret > 0){
		cout << "Takahashi" << endl;
 	}else if(ret < 0){
		cout << "Aoki" << endl;
	}else{
		cout << "Draw" << endl;
	}
	
	return 0;
}

#include <bits/stdc++.h>
using namespace std;

#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef pair<string, string> pss;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<pii> vii;
typedef vector<ll> vl;
typedef vector<vl> vvl;

double EPS=1e-9;
int INF=1000000005;
long long INFF=1000000000000000005ll;
double PI=acos(-1);
int dirx[8]={ -1, 0, 0, 1, -1, -1, 1, 1 };
int diry[8]={ 0, 1, -1, 0, -1, 1, -1, 1 };
ll MOD = 1000000007;

#define DEBUG fprintf(stderr, "====TESTING====\n")
#define VALUE(x) cerr << "The value of " << #x << " is " << x << endl
#define OUT(x) cout << x << "\n"
#define OUTH(x) cout << x << " "
#define debug(...) fprintf(stderr, __VA_ARGS__)
#define READ(x) for(auto &(z):x) cin >> z;
#define FOR(a, b, c) for (int(a)=(b); (a) < (c); ++(a))
#define FORN(a, b, c) for (int(a)=(b); (a) <= (c); ++(a))
#define FORD(a, b, c) for (int(a)=(b); (a) >= (c); --(a))
#define FORSQ(a, b, c) for (int(a)=(b); (a) * (a) <= (c); ++(a))
#define FORC(a, b, c) for (char(a)=(b); (a) <= (c); ++(a))
#define EACH(a, b) for (auto&(a) : (b))
#define REP(i, n) FOR(i, 0, n)
#define REPN(i, n) FORN(i, 1, n)
#define MAX(a, b) a=max(a, b)
#define MIN(a, b) a=min(a, b)
#define SQR(x) ((ll)(x) * (x))
#define RESET(a, b) memset(a, b, sizeof(a))
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define ALL(v) v.begin(), v.end()
#define ALLA(arr, sz) arr, arr + sz
#define SIZE(v) (int)v.size()
#define SORT(v) sort(ALL(v))
#define REVERSE(v) reverse(ALL(v))
#define SORTA(arr, sz) sort(ALLA(arr, sz))
#define REVERSEA(arr, sz) reverse(ALLA(arr, sz))
#define PERMUTE next_permutation
#define TC(t) while (t--)
#define FAST_INP  ios_base::sync_with_stdio(false);cin.tie(NULL)
#define what_is(x) cerr << #x << " is " << x << endl

template<typename T_vector>
void output_vector(const T_vector &v, bool line_break = false, bool add_one = false, int start = -1, int end = -1) {
    if (start < 0) start = 0;
    if (end < 0) end = int(v.size());
    for (int i = start; i < end; i++) {
      cout << v[i] + (add_one ? 1 : 0) << (line_break ? '\n' : i < end - 1 ? ' ' : '\n');
    }
}

void solve() {
    int h, w; cin >> h >> w;
    vvi dp(h, vi(w, -INF)), s(h, vi(w));
    REP(i, h) REP(j, w) {
        char x; cin >> x;
        if(x == '+') s[i][j] = 1;
        else s[i][j] = -1;
    }
    --h, --w;
    dp[h][w] = 0;
    FORD(i, h, 0) {
        FORD(j, w, 0) {
            if(i < h) MAX(dp[i][j], s[i + 1][j] - dp[i + 1][j]);
            if(j < w) MAX(dp[i][j], s[i][j + 1] - dp[i][j + 1]);
        }
    }
    if(dp[0][0] > 0) OUT("Takahashi");
    else if(dp[0][0] < 0) OUT("Aoki");
    else OUT("Draw");
}
 
int main()
{
    FAST_INP;

//    #ifndef ONLINE_JUDGE
//    freopen("input.txt","r", stdin);
//    freopen("output.txt","w", stdout);
//    #endif
 
    // int tc; cin >> tc;
    // TC(tc) solve();
    solve();
    return 0;
}
