#include <iostream>
#include <queue>

using namespace std;

const int DIR_X[2] = {-1, 0};
const int DIR_Y[2] = {0, -1};

int h, w;
int a[2001][2001];

pair<int,int> ans[2001][2001];
bool used[2001][2001];
void calc() {
    queue<pair<int, pair<int,int>>> que;

    int start = 1;
    if ((w+h-2) % 2 != 0) {
        start = -1;
    }
    que.push(make_pair(start, make_pair(w-1,h-1)));

    while(que.size()) {
        pair<int , pair<int, int>> now = que.front();
        que.pop();

        int my = now.first;
        int nowX = now.second.first;
        int nowY = now.second.second;

        // cout << nowX << ", " << nowY << endl;

        for (int i = 0;i < 2;i++) {
            int toX = nowX + DIR_X[i];
            int toY = nowY + DIR_Y[i];

            if (toX < 0 || toY < 0) continue;

            if (used[toX][toY]) {
                if (my == 1) {
                    int ansDiff = ans[toX][toY].second - ans[toX][toY].first;
                    int nowDiff = ans[nowX][nowY].second - ans[nowX][nowY].first + a[nowX][nowY];

                    if (nowDiff > ansDiff) {
                        ans[toX][toY] = ans[nowX][nowY];
                        ans[toX][toY].second += a[nowX][nowY];
                    }
                } else {
                    int ansDiff = ans[toX][toY].first - ans[toX][toY].second;
                    int nowDiff = ans[nowX][nowY].first - ans[nowX][nowY].second + a[nowX][nowY];

                    if (nowDiff > ansDiff) {
                        ans[toX][toY] = ans[nowX][nowY];
                        ans[toX][toY].first += a[nowX][nowY];
                    }
                }
            } else {
                used[toX][toY] = true;
                ans[toX][toY] = ans[nowX][nowY];
                if (my == 1) {
                    ans[toX][toY].second += a[nowX][nowY];
                } else {
                    ans[toX][toY].first += a[nowX][nowY];
                }
                que.push(make_pair(-my, make_pair(toX, toY)));
            }
        }
    }
    // cout << ans[2][2].first << ", " << ans[2][2].second << endl;

    // cout << ans[0][0].first << ", " << ans[0][0].second << endl;

    if (ans[0][0].first == ans[0][0].second) {
        cout << "Draw" << endl;
    } else if (ans[0][0].first > ans[0][0].second) {
        cout << "Takahashi" << endl;
    } else {
        cout << "Aoki" << endl;
    }
}

int main() {
    string str;
    cin >> h >> w;
    for (int i = 0;i < h;i++) {
        cin >> str;
        for (int j = 0;j < w;j++) {
            if (str[j] == '+') {
                a[j][i] = 1;
            } else {
                a[j][i] = -1;
            }
        }
    }

    calc();

    return 0;
}
//#include <iostream>
//#include <vector>
#include <bits/stdc++.h>
using namespace std;
using Graph = vector<vector<int>>;

template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; }
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; }

int main() {
    int H, W;
    cin >> H >> W;
    vector<vector<int>> A(H, vector<int>(W));
    char a;
    for(int i = 0; i < H; ++i) {
        for(int j = 0; j < W; ++j) {
            cin >> a;
            if(a == '+') A.at(i).at(j) = 1;
            else A.at(i).at(j) = -1;
        }
    }
    
    
    vector<vector<int>> dp(H+1, vector<int>(W+1, 0));
    
    for(int i = H-1; i >= 0; --i) {
        for(int j = W-1; j >= 0; --j) {
            // mr. takahashi 
            if((i + j) % 2 == 0) {
                if(i+1 < H && j+1 < W) {
                    dp.at(i).at(j) = max(dp.at(i+1).at(j) + A.at(i+1).at(j), dp.at(i).at(j+1) + A.at(i).at(j+1));
                }
                else if(i+1 == H && j+1 < W) {
                    dp.at(i).at(j) = dp.at(i).at(j+1) + A.at(i).at(j+1);
                }
                else if(i+1 < H && j+1 == W) {
                    dp.at(i).at(j) = dp.at(i+1).at(j) + A.at(i+1).at(j);
                }
            }
            else {
                if(i+1 < H && j+1 < W) {
                    dp.at(i).at(j) = min(dp.at(i+1).at(j) - A.at(i+1).at(j), dp.at(i).at(j+1) - A.at(i).at(j+1));
                }
                else if(i+1 == H && j+1 < W) {
                    dp.at(i).at(j) = dp.at(i).at(j+1) - A.at(i).at(j+1);
                }
                else if(i+1 < H && j+1 == W) {
                    dp.at(i).at(j) = dp.at(i+1).at(j) - A.at(i+1).at(j);
                }
            }
        }
    }

    if(dp.at(0).at(0) > 0) cout << "Takahashi" << endl;
    else if(dp.at(0).at(0) < 0) cout << "Aoki" << endl;
    else cout << "Draw" << endl;
}
