#include <bits/stdc++.h>
using namespace std;
#ifdef tabr
#include "library/debug.cpp"
#else
#define debug(...)
#endif

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n;
    cin >> n;
    string s;
    cin >> s;
    stack<char> st;
    for (int i = 0; i < n; i++) {
        st.emplace(s[i]);
        if ((int)st.size() >= 3) {
            string t(3, ' ');
            for (int j = 0; j < 3; j++) {
                t[2 - j] = st.top();
                st.pop();
            }
            if (t != "fox") {
                for (int j = 0; j < 3; j++) {
                    st.emplace(t[j]);
                }
            }
        }
    }
    cout << st.size() << '\n';
    return 0;
}
#include <bits/stdc++.h>

#define SORT(v, n) sort(v, v + n);
#define VSORT(v) sort(v.begin(), v.end());
#define size_t unsigned long long
#define ll long long
#define rep(i, a) for (int i = 0; i < (a); i++)
#define repr(i, a) for (int i = (int)(a)-1; i >= 0; i--)
#define FOR(i, a, b) for (int i = (a); i < (b); i++)
#define FORR(i, a, b) for (int i = (int)(b)-1; i >= a; i--)
#define ALL(a) a.begin(), a.end()
using namespace std;
int si()
{
  int x;
  scanf("%d", &x);
  return x;
}
long long sl()
{
  long long x;
  scanf("%lld", &x);
  return x;
}
string ss()
{
  string x;
  cin >> x;
  return x;
}
void pi(int x) { printf("%d ", x); }
void pl(long long x) { printf("%lld ", x); }
void pd(double x) { printf("%.15f ", x); }
void ps(const string &s) { printf("%s ", s.c_str()); }
void br() { putchar('\n'); }

const ll MOD = 1e9 + 7;

const double PI = 3.14159265358979323846;

struct mint
{
  int n;
  mint(int n_ = 0) : n(n_) {}
};

mint operator+(mint a, mint b)
{
  a.n += b.n;
  if (a.n >= MOD)
    a.n -= MOD;
  return a;
}
mint operator-(mint a, mint b)
{
  a.n -= b.n;
  if (a.n < 0)
    a.n += MOD;
  return a;
}
mint operator*(mint a, mint b) { return (long long)a.n * b.n % MOD; }
mint &operator+=(mint &a, mint b) { return a = a + b; }
mint &operator-=(mint &a, mint b) { return a = a - b; }
mint &operator*=(mint &a, mint b) { return a = a * b; }

typedef pair<int, int> P;

const int INF = 1e7 + 5;

int point(const vector<string> &s, int i, int j)
{
  return (s[i][j] == '+' ? 1 : -1);
}

int main()
{
  int h, w;
  cin >> h >> w;
  vector<vector<int>> dp(h, vector<int>(w, INF));
  vector<string> a(h);
  rep(i, h)
  {
    cin >> a[i];
  }
  dp[h - 1][w - 1] = 0;
  repr(i, h)
  {
    repr(j, w)
    {
      int taka = (i + j + 1) % 2;
      if (taka)
      {
        if (i - 1 >= 0)
          dp[i - 1][j] = dp[i - 1][j] == INF ? dp[i][j] - point(a, i, j) : min(dp[i - 1][j], dp[i][j] - point(a, i, j));
        if (j - 1 >= 0)
          dp[i][j - 1] = dp[i][j - 1] == INF ? dp[i][j] - point(a, i, j) : min(dp[i][j - 1], dp[i][j] - point(a, i, j));
      }
      else
      {
        if (i - 1 >= 0)
          dp[i - 1][j] = dp[i - 1][j] == INF ? dp[i][j] + point(a, i, j) : max(dp[i - 1][j], dp[i][j] + point(a, i, j));
        if (j - 1 >= 0)
          dp[i][j - 1] = dp[i][j - 1] == INF ? dp[i][j] + point(a, i, j) : max(dp[i][j - 1], dp[i][j] + point(a, i, j));
      }
    }
  }
  string str = "Draw";
  if (dp[0][0] > 0)
    str = "Takahashi";
  else if (dp[0][0] < 0)
    str = "Aoki";
  cout << str << endl;
}
