#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <cmath>
#include <iomanip>
#include <queue>
#include <map>
#include <set>
using namespace std;
using ll = long long int;
using ld = long double;
using P = pair<int, int>;

vector<vector<int>> dp;
vector<vector<bool>> visited;
vector<string> a;
int h, w;

int f(int i, int j){
    if(visited[i][j]) return dp[i][j];
    else{
        visited[i][j] = true;
        if((i+j)%2 == 1){
            dp[i][j] = 1001001001;
            if(i+1 < h) dp[i][j] = min(dp[i][j], f(i+1, j));
            if(j+1 < w) dp[i][j] = min(dp[i][j], f(i, j+1));
            dp[i][j] += (a[i][j] == '+') ? 1: -1;
        }else{
            dp[i][j] = -1001001001;
            if(i+1 < h) dp[i][j] = max(dp[i][j], f(i+1, j));
            if(j+1 < w) dp[i][j] = max(dp[i][j], f(i, j+1));
            if(i != 0 || j != 0) dp[i][j] += (a[i][j] == '-') ? 1: -1;
        }
    }
    return dp[i][j];
}

int main(){
    cin >> h >> w;
    a = vector<string>(h);
    for(auto &p: a) cin >> p;

    dp = vector<vector<int>>(h, vector<int>(w, -1));
    visited = vector<vector<bool>>(h, vector<bool>(w, false));
    visited[h-1][w-1] = true;
    dp[h-1][w-1] = (a[h-1][w-1] == '+') ? 1: -1;
    if((h+w)%2 == 0) dp[h-1][w-1] *= -1;
    if(h == 1 && w == 1) dp[h-1][w-1] = 0;
    if(f(0, 0) > 0) cout << "Takahashi" << endl;
    else if(f(0, 0) < 0) cout << "Aoki" << endl;
    else cout << "Draw" << endl;
    return 0;
}
//pls work
#include <bits/stdc++.h>
#include <cmath>
#include <cctype>
#include <cstring>
    
#define fori(i, j, k, in) for (int i = j; i < k; i += in)
#define rfori(i, j, k, in) for (int i = j - 1; i >= k; i -= in)
#define rep(i, j) fori(i, 0, j, 1)
#define rrep(i, j) rfori(i, j, 0, 1)
#define sq(a) (a) * (a)
#define IAMSPEED std::ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
#define acci(n) ll n; cin>>n;
#define accia(n, a) ll n; cin>>n; ll a[n]; for(int i=0; i<n; i++) cin>>a[i];
#define pb push_back
#define mp make_pair
    
using namespace std;
    
typedef pair<int, int> pi;
typedef vector<int> vi;
typedef long long ll;
    
const int N = 5e+5, m = 1000000007;
    
//USE ll instead of int
//Don't use rep for dp!!
    
int main()
{
    IAMSPEED
    int T = 1, cse = 0;
    // cin >> T;
    while (T--)
    {
        //cse++;
        //cout<<"Case #"<<cse<<": ";
        int h, w;
        cin>>h>>w;
        char c;
        int a[h+1][w+1];
        int dp[h+1][w+1];
        memset(a,0,sizeof(a));
        memset(dp,0,sizeof(dp));
        rep(i, h)
        {
            rep(j, w)
            {
                cin>>c;
                if(c=='+')
                    a[i][j] = 1;
                else
                    a[i][j] = -1;
            }
        }
        rrep(i, h)
        {
            rrep(j, w)
            {
                if(i==h-1&&j==w-1)
                    continue;
                else if((i+j)%2==0)
                {
                    if (i==h-1)
                    {
                        dp[i][j] = dp[i][j+1]+a[i][j+1];
                    }
                    else if (j==w-1)
                    {
                        dp[i][j] = dp[i+1][j]+a[i+1][j];
                    }
                    else
                    {
                        dp[i][j] = max(dp[i+1][j]+a[i+1][j], dp[i][j+1]+a[i][j+1]);
                    }
                }
                else
                {
                    if (i==h-1)
                    {
                        dp[i][j] = dp[i][j+1]-a[i][j+1];
                    }
                    else if (j==w-1)
                    {
                        dp[i][j] = dp[i+1][j]-a[i+1][j];
                    }
                    else
                    {
                        dp[i][j] = min(dp[i+1][j]-a[i+1][j], dp[i][j+1]-a[i][j+1]);
                    }
                }
            }
        }
        if(dp[0][0]==0)
            cout<<"Draw";
        else if(dp[0][0]>0)
            cout<<"Takahashi";
        else cout<<"Aoki";
    }
    return 0;
} 