#include <bits/stdc++.h>
using namespace std;
int n;
string s[20];
int d[1 << 20], nd[1 << 20];
int getD(int sum, char ch) {
  if (ch != 'a' && ch != 'b') return 0;
  if ((sum & 1) ^ (ch == 'a')) return 1;
  return -1;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin >> n;
  for (int i = 0; i < n; ++i) cin >> s[i];
  for (int i = 0; i < (1 << n); ++i) d[i] = -1000000000;
  d[1] = 0;
  vector<int> masks(26, 0), prevMasks(26, 0);
  masks[s[n - 1][n - 1] - 'a'] = 1;
  for (int sum = 2 * (n - 1) - 1; sum >= 0; --sum) {
    for (int i = 1; i < (1 << n); ++i) nd[i] = d[i];
    prevMasks.swap(masks);
    masks.assign(26, 0);
    int num = 0;
    vector<char> ch;
    for (int i = n - 1; i >= 0; --i) {
      int j = sum - i;
      if (j < 0 || j >= n) continue;
      masks[s[i][j] - 'a'] += (1 << num);
      ch.push_back(s[i][j]);
      ++num;
    }
    int len = ch.size();
    for (int i = 1; i < (1 << len); ++i) {
      int b = 0;
      while (!(i & (1 << b))) ++b;
      int c = ch[b] - 'a';
      if ((i & masks[c]) != i) continue;
      int nmask;
      if (sum < n - 1)
        nmask = i | (2 * i);
      else
        nmask = i | (i / 2);
      d[i] = -1000000000;
      for (int j = 0; j < 26; ++j)
        if (nmask & prevMasks[j])
          d[i] = max(d[i], getD(sum + 1, j + 'a') - nd[nmask & prevMasks[j]]);
    }
  }
  d[1] -= getD(0, s[0][0]);
  if (d[1] < 0) cout << "FIRST\n";
  if (d[1] > 0) cout << "SECOND\n";
  if (d[1] == 0) cout << "DRAW\n";
  return 0;
}
