#include <bits/stdc++.h>
using namespace std;
const int N = 22;
const int M = 1000010;
const int inf = 0x3f3f3f3f;
const long long oo = 0x3f3f3f3f3f3f3f3fll;
const int mod = 1e9 + 7;
int n;
char S[N][N];
int dp[42][1 << 20];
bool vis[42][1 << 20];
int dfs(int l, int s) {
  if (l == n + n - 2) return 0;
  int &ret = dp[l][s];
  if (vis[l][s]) return ret;
  vis[l][s] = 1;
  int ns[26] = {};
  if (l < n - 1) {
    for (int i = 0; i <= l; i++) {
      if (!(s & (1 << i))) continue;
      int x = l - i, y = i;
      if (x < n - 1) ns[S[x + 1][y] - 'a'] |= 1 << i;
      if (y < n - 1) ns[S[x][y + 1] - 'a'] |= 1 << (i + 1);
    }
  } else {
    for (int i = 0; i < 2 * n - 1 - l; i++) {
      if (!(s & (1 << i))) continue;
      int x = n - 1 - i, y = l - (n - 1) + i;
      if (x < n - 1) ns[S[x + 1][y] - 'a'] |= 1 << (i - 1);
      if (y < n - 1) ns[S[x][y + 1] - 'a'] |= 1 << i;
    }
  }
  if (l & 1) {
    ret = -inf;
    for (int i = 0; i < 26; i++) {
      if (ns[i] == 0) continue;
      ret = max(ret, dfs(l + 1, ns[i]) + (i == 0) - (i == 1));
    }
  } else {
    ret = inf;
    for (int i = 0; i < 26; i++) {
      if (ns[i] == 0) continue;
      ret = min(ret, dfs(l + 1, ns[i]) + (i == 0) - (i == 1));
    }
  }
  return ret;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%s", S[i]);
  int sum = dfs(0, 1) + (S[0][0] == 'a') - (S[0][0] == 'b');
  if (sum > 0)
    puts("FIRST");
  else if (sum == 0)
    puts("DRAW");
  else
    puts("SECOND");
  return 0;
}
