#include <bits/stdc++.h>
using namespace std;
const int one = 1048576;
int n, inf = 1e9, f[40][one], g[30][30];
char s[30][30];
bool check(int x, int y) { return x >= 0 && y >= 0 && x < n && y < n; }
int Get(int x, int y, int c) {
  if (c == 0) {
    if ((x + y) & 1) return -1;
    return 1;
  }
  if (c == 1) {
    if ((x + y) & 1) return 1;
    return -1;
  }
  return 0;
}
void read(int &x) {
  char ch = getchar();
  int mark = 1;
  for (; ch != '-' && (ch < '0' || ch > '9'); ch = getchar())
    ;
  if (ch == '-') mark = -1, ch = getchar();
  for (x = 0; ch >= '0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - 48;
  x *= mark;
}
int Dp(int u, int sta) {
  if (u == n * 2 - 2) return g[n - 1][n - 1];
  if (f[u][sta] != -inf) return f[u][sta];
  int tmp;
  for (int j = 0; j < n; j++)
    if ((sta >> j) & 1) {
      tmp = g[j][u - j];
      break;
    }
  for (int i = 0; i < 26; i++) {
    int New = 0;
    for (int j = 0; j < n; j++)
      if ((sta >> j) & 1) {
        int x = j, y = u - j;
        if (check(x + 1, y) && s[x + 1][y] == 'a' + i) New |= 1 << (x + 1);
        if (check(x, y + 1) && s[x][y + 1] == 'a' + i) New |= 1 << x;
      }
    if (New) f[u][sta] = max(f[u][sta], Dp(u + 1, New));
  }
  return f[u][sta] = tmp - f[u][sta];
}
int main() {
  read(n);
  for (int i = 0; i < n; i++) scanf("%s", s[i]);
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++) g[i][j] = Get(i, j, s[i][j] - 'a');
  for (int i = 0; i < n * 2; i++)
    for (int j = 0; j < (1 << n); j++) f[i][j] = -inf;
  int t = Dp(0, 1);
  if (t > 0)
    printf("FIRST\n");
  else if (t < 0)
    printf("SECOND\n");
  else
    printf("DRAW\n");
  return 0;
}
