#include <bits/stdc++.h>
using namespace std;
void ASS(bool b) {
  if (!b) ++*(int *)0;
}
#pragma comment(linker, "/STACK:106777216")
const int inf = 1 << 30;
struct S {
  int d, x, y;
  S rev() {
    S res;
    res.d = -d;
    res.x = y;
    res.y = x;
    return res;
  }
};
bool operator<(S a, S b) {
  if (a.d != b.d) return a.d < b.d;
  if (a.x != b.x) return a.x < b.x;
  return a.y > b.y;
}
map<string, int> num;
int n;
string s[32];
vector<string> v;
int Score(const string &s) {
  int sum = 0;
  int mx = 0;
  for (int i = 0; i < (int)(s.size()); i++) {
    int val = s[i] - 'a' + 1;
    sum += val;
    mx = max(mx, val);
  }
  return sum * mx + num[s];
}
map<string, S> dp;
S D(const string &s) {
  map<string, S>::iterator it = dp.find(s);
  if (it != dp.end()) return it->second;
  S res;
  res.d = -1;
  res.x = 0;
  res.y = 0;
  string ts = s;
  ts += 'a';
  for (char c = 'a'; c <= 'z'; c++) {
    ts[ts.size() - 1] = c;
    if (binary_search(v.begin(), v.end(), ts)) {
      S t = D(ts);
      t = t.rev();
      t.x += Score(ts);
      if (res < t) res = t;
    }
  }
  ts = "a";
  ts += s;
  for (char c = 'a'; c <= 'z'; c++) {
    ts[0] = c;
    if (binary_search(v.begin(), v.end(), ts)) {
      S t = D(ts);
      t = t.rev();
      t.x += Score(ts);
      if (res < t) res = t;
    }
  }
  dp[s] = res;
  return res;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < (int)(n); i++) {
    static char str[120];
    scanf("%s", str);
    s[i] = string(str);
    for (int d = 1; d <= s[i].size(); d++)
      for (int j = 0; j + d <= s[i].size(); j++) v.push_back(s[i].substr(j, d));
  }
  sort(v.begin(), v.end());
  v.resize(unique(v.begin(), v.end()) - v.begin());
  for (int z = 0; z < (int)(v.size()); z++) {
    int &tnum = num[v[z]];
    for (int i = 0; i < (int)(n); i++) {
      bool ok = 0;
      for (int j = 0; j + v[z].size() <= s[i].size(); j++) {
        bool issub = 1;
        for (int k = 0; k < (int)(v[z].size()); k++)
          if (v[z][k] != s[i][j + k]) {
            issub = 0;
            break;
          }
        if (issub) {
          ok = 1;
          break;
        }
      }
      if (ok) tnum++;
    }
  }
  S res = D("");
  if (res.d > 0)
    printf("First\n");
  else
    printf("Second\n");
  printf("%d %d\n", res.x, res.y);
  return 0;
}
