#include <bits/stdc++.h>
const int dx[] = {1, 0, -1, 0};
const int dy[] = {0, 1, 0, -1};
using namespace std;
const int MAXN = 20;
const int INF = 1e8;
string T[MAXN];
int n;
int memo[2 * MAXN][1 << MAXN];
int dfs(int step, int mask) {
  int& ret = memo[step][mask];
  if (ret != -INF) return ret;
  if (step == 2 * n - 2) return ret = 0;
  if (step % 2)
    ret = -INF;
  else
    ret = INF;
  for (char c = 'a'; c <= 'z'; c++) {
    int nmask = 0;
    for (int y = 0; y < n; y++) {
      if ((mask & (1 << y)) == 0) continue;
      int x = step - y;
      if (x < 0 || x >= n) continue;
      int ny = y + 1, nx = x + 1;
      if (ny < n && T[ny][x] == c) nmask |= 1 << ny;
      if (nx < n && T[y][nx] == c) nmask |= 1 << y;
    }
    if (nmask) {
      int tmp = dfs(step + 1, nmask);
      if (c == 'a')
        tmp++;
      else if (c == 'b')
        tmp--;
      if (step % 2)
        ret = max(ret, tmp);
      else
        ret = min(ret, tmp);
    }
  }
  return ret;
}
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  cin >> n;
  for (int i = 0; i < n; i++) cin >> T[i];
  for (int i = 0; i < 2 * MAXN; i++)
    for (int j = 0; j < (1 << MAXN); j++) memo[i][j] = -INF;
  int ans = dfs(0, 1);
  if (T[0][0] == 'a')
    ans++;
  else if (T[0][0] == 'b')
    ans--;
  if (ans > 0)
    cout << "FIRST" << endl;
  else if (ans == 0)
    cout << "DRAW" << endl;
  else
    cout << "SECOND" << endl;
  return 0;
}
