#include <bits/stdc++.h>
using namespace std;
int N;
string board[30];
int mask[42][30];
int dp[42][1 << 20];
int func(int i, int j, int c, bool first) {
  if (dp[i][j] != 10000) return dp[i][j];
  int next;
  int ans = -(1 << 29);
  if (i == 2 * (N - 1)) {
    ans = 0;
  } else {
    for ((next) = 0; (next) < (int)(26); (next)++) {
      int i2 = i + 1;
      int j2 = (mask[i + 1][next] & (j | (j << 1)));
      if (j2 != 0) ans = max(ans, -func(i2, j2, next, !first));
    }
  }
  if (first) {
    if (c == 0)
      ans++;
    else if (c == 1)
      ans--;
  } else {
    if (c == 0)
      ans--;
    else if (c == 1)
      ans++;
  }
  return dp[i][j] = ans;
}
string calc() {
  int i, j, k;
  for ((i) = 0; (i) < (int)(2 * N); (i)++)
    for ((j) = 0; (j) < (int)(26); (j)++)
      for ((k) = 0; (k) < (int)(N); (k)++) {
        int x = k;
        int y = i - x;
        if (y >= 0 && y < N && board[x][y] - 'a' == j) mask[i][j] |= (1 << k);
      }
  for ((i) = 0; (i) < (int)(2 * N); (i)++)
    for ((j) = 0; (j) < (int)((1 << N)); (j)++) dp[i][j] = 10000;
  int ans = func(0, 1, board[0][0] - 'a', false);
  if (ans < 0) return "FIRST";
  if (ans > 0) return "SECOND";
  return "DRAW";
}
void solve(istream &in, ostream &out) {
  in >> N;
  for (int i = 0; i < N; i++) in >> board[i];
  out << calc() << endl;
}
int main() {
  solve(cin, cout);
  return 0;
}
