#include <bits/stdc++.h>
using namespace std;
const int MAX = 20 + 10;
const int INF = 1000000000 + 10;
int n;
char g[MAX][MAX];
int f[2][1 << 21];
pair<int, int> id[MAX][MAX];
int to[MAX * 2], go[30];
pair<int, int> is[MAX * 3][MAX * 3];
int main() {
  int i, j, k;
  scanf("%d", &n);
  for ((i) = (1); (i) <= (n); ++(i)) scanf("%s", g[i] + 1);
  for ((i) = (1); (i) <= (n); ++(i))
    for ((j) = (1); (j) <= (n); ++(j)) {
      id[i][j] = make_pair(i + j - 1, to[i + j - 1]);
      is[i + j - 1][to[i + j - 1]] = make_pair(i, j);
      to[i + j - 1]++;
    }
  int last = 0, now = 1;
  int inf = INF;
  for ((i) = (0); (i) != (1 << n); ++(i)) f[now][i] = inf;
  if (g[n][n] == 'a')
    f[now][1] = 1;
  else if (g[n][n] == 'b')
    f[now][1] = -1;
  else
    f[now][1] = 0;
  for (i = n + n - 2; i >= 1; --i) {
    inf *= -1;
    swap(now, last);
    int num = (i <= n ? i : 2 * n - i);
    for ((j) = (0); (j) != (1 << num); ++(j)) f[now][j] = inf;
    for ((j) = (1); (j) != (1 << num); ++(j)) {
      int &p = f[now][j];
      for ((k) = (0); (k) != (26); ++(k)) go[k] = 0;
      int ll = -1;
      for ((k) = (0); (k) != (num); ++(k))
        if ((j >> k) & 1) {
          int ni = is[i][k].first;
          int nj = is[i][k].second;
          if (ll != -1 && g[ni][nj] != ll) {
            ll = -2;
            break;
          }
          ll = g[ni][nj];
          go[g[ni][nj + 1] - 'a'] |= 1 << id[ni][nj + 1].second;
          go[g[ni + 1][nj] - 'a'] |= 1 << id[ni + 1][nj].second;
        }
      if (ll == -2) continue;
      for ((k) = (0); (k) != (26); ++(k))
        if (go[k] != 0 && f[last][go[k]] != -inf) {
          if (i % 2 == 0)
            p = max(p, f[last][go[k]]);
          else
            p = min(p, f[last][go[k]]);
        }
      if (ll == 'a')
        ++p;
      else if (ll == 'b')
        --p;
    }
  }
  if (f[now][1] > 0)
    cout << "FIRST" << endl;
  else if (f[now][1] == 0)
    cout << "DRAW" << endl;
  else
    cout << "SECOND" << endl;
  return 0;
}
