#include <bits/stdc++.h>
using namespace std;
const int MAXN = 20, INF = 1000;
int n;
string ch[MAXN];
int f[2 * MAXN][1 << 20], pos[MAXN][MAXN];
vector<pair<int, int> > diag[2 * MAXN];
int score(char c) {
  if (c == 'a') return 1;
  if (c == 'b') return -1;
  return 0;
}
int Cal(int s, int mask) {
  if (f[s][mask] > -INF) return f[s][mask];
  if (s == 2 * (n - 1)) return f[s][mask] = 0;
  int t[26];
  memset(t, 0, sizeof t);
  for (int i = 0; i < diag[s].size(); i++) {
    if (!(mask & (1 << i))) continue;
    int x = diag[s][i].first, y = diag[s][i].second;
    if (x < n - 1) {
      int p = pos[x + 1][y];
      int l = ch[x + 1][y] - 'a';
      t[l] |= (1 << p);
    }
    if (y < n - 1) {
      int p = pos[x][y + 1];
      int l = ch[x][y + 1] - 'a';
      t[l] |= (1 << p);
    }
  }
  int p = s % 2;
  int res = (p) ? -INF : INF;
  for (int i = 0; i < 26; i++) {
    if (t[i] == 0) continue;
    int r = score(i + 'a') + Cal(s + 1, t[i]);
    if ((p && r > res) || (!p && r < res)) res = r;
  }
  return (f[s][mask] = res);
}
int main() {
  scanf("%d\n", &n);
  for (int i = 0; i < n; i++) cin >> ch[i];
  for (int i = 0; i < 2 * n - 1; i++)
    for (int j = 0; j < 1 << n; j++) f[i][j] = -INF;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      if (i == n - 1 || j == 0) {
        int p = 0;
        int x = i, y = j;
        while (x >= 0 && y < n) {
          diag[x + y].push_back(pair<int, int>(x, y));
          pos[x][y] = p++;
          x--, y++;
        }
      }
  int res = score(ch[0][0]) + Cal(0, 1);
  if (res < 0)
    puts("SECOND");
  else if (res > 0)
    puts("FIRST");
  else
    puts("DRAW");
}
