#include <bits/stdc++.h>
using namespace std;
const int INF = 2000000005;
const long long INFLL = 1000000000000000002ll;
const long long MOD = 1000000007;
inline long long min(long long a, long long b, long long c) {
  return min(min(a, b), c);
}
inline long long min(long long a, long long b, long long c, long long d) {
  return min(min(min(a, b), c), d);
}
inline long long max(long long a, long long b, long long c) {
  return max(max(a, b), c);
}
inline long long max(long long a, long long b, long long c, long long d) {
  return max(max(max(a, b), c), d);
}
char B[25][25];
int DP[39][1048577], N;
string mask(int m) {
  string ret = "";
  for (int i = (0); i <= (N - 1); i++) {
    if (m & (1 << i))
      ret += '1';
    else
      ret += '0';
  }
  return ret;
}
int dp(int diag, int m) {
  if (DP[diag][m] > -INF) return DP[diag][m];
  if (diag == 2 * N - 2) return 0;
  int ret = diag & 1 ? -INF : INF;
  for (int c = ('a'); c <= ('z'); c++) {
    int nm = 0;
    for (int i = (0); i <= (N - 1); i++)
      if (m & (1 << i)) {
        int j = diag - i;
        if (j < 0 || j >= N) continue;
        if (i < N - 1 && B[i + 1][j] == c) nm |= (1 << (i + 1));
        if (j < N - 1 && B[i][j + 1] == c) nm |= (1 << i);
      }
    int add = 0;
    if (c == 'a') add = 1;
    if (c == 'b') add = -1;
    if (nm > 0) {
      int q = add + dp(diag + 1, nm);
      if (diag & 1)
        ret = max(ret, q);
      else
        ret = min(ret, q);
    }
  }
  return DP[diag][m] = ret;
}
int main() {
  for (int i = (0); i <= (38); i++)
    for (int m = (0); m <= (1048576); m++) DP[i][m] = -INF;
  cin >> N;
  for (int i = (0); i <= (N - 1); i++) {
    string s;
    cin >> s;
    for (int j = (0); j <= (N - 1); j++) B[i][j] = s[j];
  }
  int add = 0;
  if (B[0][0] == 'a') add = 1;
  if (B[0][0] == 'b') add = -1;
  int q = add + dp(0, 1);
  if (q > 0)
    cout << "FIRST";
  else if (q < 0)
    cout << "SECOND";
  else
    cout << "DRAW";
}
