 #include <bits/stdc++.h>
        using namespace std;
        #define tani_nachi_ke  ios_base::sync_with_stdio(false); cin.tie(NULL);
        #define M_PI 3.14159265358979323846
        #define data data_
        #define ff first
        #define ss second
        #define pb push_back
        #define ld long double
        #define int long long
        #define print(t) cout << "Case #" << t << ": ";
        int32_t main()
        {
            tani_nachi_ke  
            
 
            int n,m;
            cin >> n >> m;
            int a[n+1]={0},b[m+1]={0};
            for(int i = 1; i <= n; i++)
                cin >> a[i];
            for(int i = 1; i <= m; i++)
                cin >> b[i];
            sort(a+1, a+n+1);
            int suff[n+10] = {0}, pref[n+10] = {0};
            for(int i = n-1; i >= 1; i-=2)
            {
                suff[i] = a[i+1] - a[i];
                suff[i] += suff[i+2];
            }
            for(int i = 2; i <= n; i+=2)
            {
                pref[i] = a[i] - a[i-1];
                pref[i] += pref[i-2];
            }
 
            int ans = 1e18;
            // for(int i = 1; i <= n; i++)
            //     cout << a[i] << " ";
            // cout << endl;
            for(int i = 1; i <= m; i++)
            {
                int j = lower_bound(a+1, a+n+1, b[i]) - (a+1);
                // cout << j << endl;
                if(j%2)
                {
                    ans = min(ans, pref[j-1] + abs(b[i] - a[j]) + suff[j+1]);
                }
                else
                {
                    ans = min(ans, pref[j] + abs(b[i] - a[j+1]) + suff[j+2]);
 
                }
            }
 
            cout << ans << endl;
            
 
 
 
 
 
           return 0;
        }
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;
typedef long long ll;
typedef vector<int> vi;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);

	int H, W;
	cin >> H >> W;
	vector<string> A(H);
	for(int i = 0; i < H; ++i) cin >> A[i];

	vector<vi> dp(H, vi(W));
	for(int i = H-1; i >= 0; --i) {
		for(int j = W-1; j >= 0; --j) {
			if(i == H-1 && j == W-1) {
				dp[i][j] = 0;
			} else if((i+j)&1) {
				dp[i][j] = H+W;
				if(i+1 < H) dp[i][j] = min(dp[i][j], dp[i+1][j] + (A[i+1][j] == '-' ? 1 : -1));
				if(j+1 < W) dp[i][j] = min(dp[i][j], dp[i][j+1] + (A[i][j+1] == '-' ? 1 : -1));
			} else {
				dp[i][j] = - (H+W);
				if(i+1 < H) dp[i][j] = max(dp[i][j], dp[i+1][j] + (A[i+1][j] == '+' ? 1 : -1));
				if(j+1 < W) dp[i][j] = max(dp[i][j], dp[i][j+1] + (A[i][j+1] == '+' ? 1 : -1));
			}
		}
	}

	if(dp[0][0] > 0) cout << "Takahashi\n";
	else if(dp[0][0] == 0) cout << "Draw\n";
	else cout << "Aoki\n";

	return 0;
}