#include <bits/stdc++.h>
using namespace std;
const int MXL = 0x3f3f3f3f;
const int mxn = 20;
int n;
int val[26] = {+1, -1};
int msk[26][mxn * 2 + 1];
string a[mxn];
int f[mxn * 2 + 1][1 << mxn];
bool v[mxn * 2 + 1][1 << mxn];
int dfs(int x, int s) {
  if (x == (n - 1) * 2) return 0;
  if (v[x][s]) return f[x][s];
  if (x & 1) {
    int re = -MXL;
    int m;
    for (int i = 0; i < 26; ++i)
      if (m = x < n - 1 ? ((s | s << 1) & msk[i][x + 1])
                        : ((s | s >> 1) & msk[i][x + 1]))
        re = max(re, dfs(x + 1, m) + val[i]);
    return v[x][s] = true, f[x][s] = re;
  } else {
    int re = MXL;
    int m;
    for (int i = 0; i < 26; ++i)
      if (m = x < n - 1 ? ((s | s << 1) & msk[i][x + 1])
                        : ((s | s >> 1) & msk[i][x + 1]))
        re = min(re, dfs(x + 1, m) + val[i]);
    return v[x][s] = true, f[x][s] = re;
  }
}
void EXEC() {
  cin >> n;
  for (int i = 0; i < n; ++i) cin >> a[i];
  for (int c = 0; c < 26; ++c)
    for (int i = 0; i < n; ++i)
      for (int j = 0; j < n; ++j)
        if (a[i][j] - 'a' == c) msk[c][i + j] |= 1 << min(n - 1 - i, j);
  int ans = dfs(0, 1) + val[a[0][0] - 'a'];
  if (ans < 0)
    cout << "SECOND" << endl;
  else if (ans > 0)
    cout << "FIRST" << endl;
  else
    cout << "DRAW" << endl;
}
int main() {
  EXEC();
  return 0;
}
