#include <bits/stdc++.h>
using namespace std;
const int MN = 20;
const int MVAL = 1000000000;
int dp[2 * MN][1 << MN];
char grid[MN][MN];
int a[2 * MN][26];
int n;
int dfs(int d, int mask) {
  if (dp[d][mask] != MVAL) return dp[d][mask];
  int ans = 0, i;
  for ((i) = 0; (i) < (int)(n); ++(i)) {
    if ((mask >> i) & 1) {
      if (grid[i][d - i] == 'a') ++ans;
      if (grid[i][d - i] == 'b') --ans;
      break;
    }
  }
  if (d == 2 * n - 2) return dp[d][mask] = ans;
  if (d % 2) {
    dp[d][mask] = -MVAL;
    for ((i) = 0; (i) < (int)(26); ++(i)) {
      int nmask = a[d + 1][i] & (mask | (mask << 1));
      if (nmask == 0) continue;
      dp[d][mask] = max(dp[d][mask], dfs(d + 1, nmask) + ans);
    }
  } else {
    for ((i) = 0; (i) < (int)(26); ++(i)) {
      int nmask = a[d + 1][i] & (mask | (mask << 1));
      if (nmask == 0) continue;
      dp[d][mask] = min(dp[d][mask], dfs(d + 1, nmask) + ans);
    }
  }
  return dp[d][mask];
}
int main() {
  int i, j;
  scanf("%d", &n);
  for ((i) = 0; (i) < (int)(n); ++(i)) scanf("%s", grid[i]);
  for ((i) = 0; (i) < (int)(2 * n); ++(i))
    for ((j) = 0; (j) < (int)(n); ++(j)) {
      if (i - j < 0 || i - j >= n) continue;
      a[i][grid[j][i - j] - 'a'] |= 1 << j;
    }
  for ((i) = 0; (i) < (int)(2 * n); ++(i))
    for ((j) = 0; (j) < (int)(1 << n); ++(j)) dp[i][j] = MVAL;
  dfs(0, 1);
  if (dp[0][1] > 0)
    puts("FIRST");
  else if (dp[0][1] < 0)
    puts("SECOND");
  else
    puts("DRAW");
  return 0;
}
