#include <bits/stdc++.h>
using namespace std;
const int MM = 45;
char s[25][25];
int dp[41][1 << 20];
int f(char c) {
  if (c == 'a') return 1;
  if (c == 'b') return -1;
  return 0;
}
int main() {
  int two;
  int(n);
  scanf("%d", &n);
  two = (1 << n);
  for (int i = 0; i < (n); ++i) scanf("%s", (s[i]));
  dp[n + n - 2][1 << (n - 1)] = 0;
  for (int i = n + n - 3; i >= 0; i--) {
    int mask;
    if (i < n)
      mask = (1 << (i + 1)) - 1;
    else
      mask = (1 << n) - (1 << (i - n + 1));
    for (int now = mask; now; now = (now - 1) & mask) {
      bool fail = false;
      char c = 0;
      int nxt[26] = {};
      for (int j = 0; (1 << j) <= now; j++) {
        if ((now >> j) & 1) {
          if (!c)
            c = s[j][i - j];
          else {
            if (c != s[j][i - j]) {
              fail = true;
              break;
            }
          }
          int y = i - j;
          if (j + 1 < n) nxt[s[j + 1][y] - 'a'] |= 1 << (j + 1);
          if (y + 1 < n) nxt[s[j][y + 1] - 'a'] |= 1 << j;
        }
      }
      if (fail) continue;
      int player, res;
      if (i & 1) {
        player = 0;
        res = -1000;
      } else {
        player = 1;
        res = 10000;
      }
      for (int j = 0; j < 26; j++) {
        if (!nxt[j]) continue;
        if (player == 0)
          res = max(res, dp[i + 1][nxt[j]] + f('a' + j));
        else if (player == 1)
          res = min(res, dp[i + 1][nxt[j]] + f('a' + j));
      }
      dp[i][now] = res;
    }
  }
  if (dp[0][1] + f(s[0][0]) > 0)
    puts("FIRST");
  else if (dp[0][1] + f(s[0][0]) == 0)
    puts("DRAW");
  else
    puts("SECOND");
  return 0;
}
