#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:60777216")
using namespace std;
int n;
string s[22];
int id[22][22];
vector<pair<int, int> > v[44];
map<int, int> r[44];
int go(int pos, int mask) {
  if (pos == n + n - 2) return 0;
  if (r[pos].count(mask)) return r[pos][mask];
  vector<int> t;
  for (int i = (0); i < (20); i++)
    if (mask & (1 << i)) t.push_back(i);
  int m[26];
  memset(m, 0, sizeof m);
  for (int i = (0); i < (t.size()); i++) {
    int px = v[pos][t[i]].first;
    int py = v[pos][t[i]].second;
    if (px + 1 < n) m[s[px + 1][py] - 'a'] |= (1 << id[px + 1][py]);
    if (py + 1 < n) m[s[px][py + 1] - 'a'] |= (1 << id[px][py + 1]);
  }
  int best = (pos % 2 == 0 ? 100 : -100);
  for (int i = (0); i < (26); i++)
    if (m[i]) {
      int diff = go(pos + 1, m[i]);
      if (i == 0) diff++;
      if (i == 1) diff--;
      if (pos % 2 == 0)
        best = min(best, diff);
      else
        best = max(best, diff);
    }
  return r[pos][mask] = best;
}
int main() {
  cin >> n;
  for (int i = (0); i < (n); i++) cin >> s[i];
  for (int i = (0); i < (n); i++)
    for (int j = (0); j < (n); j++) {
      id[i][j] = v[i + j].size();
      v[i + j].push_back(pair<int, int>(i, j));
    }
  int d = go(0, 1) + (s[0][0] == 'a' ? 1 : (s[0][0] == 'b' ? -1 : 0));
  if (d == 0)
    puts("DRAW");
  else if (d > 0)
    puts("FIRST");
  else
    puts("SECOND");
  return 0;
}
