#include <bits/stdc++.h>
using namespace std;
const long inf = 1000000000;
long n, nn;
long d[40000][100];
long dem[40000];
long tong[40000];
long lon[40000];
long canh[40000][30][2];
long res[40000], kq, mot, hai, ans[40000], cans[40000];
string x, s[40], y;
vector<string> chuoi;
long max(long a, long b) {
  if (a > b) return a;
  return b;
}
long nap(long u, char v) {
  if (d[u][v - 'a']) return d[u][v - 'a'];
  d[u][v - 'a'] = ++nn;
  tong[nn] = tong[u] + v - 'a' + 1;
  lon[nn] = max(v - 'a' + 1, lon[u]);
  return d[u][v - 'a'];
}
void push(string &s) {
  long u = 0;
  for (long i = 0; i <= s.length() - 1; i++) u = nap(u, s[i]);
  dem[u]++;
}
long get(string &s) {
  long u = 0;
  for (long i = 0; i <= s.length() - 1; i++) {
    u = d[u][s[i] - 'a'];
    if (!u) return u;
  }
  return u;
}
long dp(long u) {
  if (res[u] != -inf) return res[u];
  res[u] = -1;
  for (long t = 0; t <= 1; t++)
    for (long i = 0; i <= 25; i++)
      if (canh[u][i][t]) {
        long v = canh[u][i][t];
        res[u] = max(dp(v), res[u]);
      }
  res[u] *= -1;
  return res[u];
}
void qhd(long u) {
  if (ans[u] != -inf) return;
  long cost = tong[u] * lon[u] + dem[u];
  ans[u] = -1;
  cans[u] = -1;
  for (long t = 0; t <= 1; t++)
    for (long i = 0; i <= 25; i++)
      if (canh[u][i][t]) {
        long v = canh[u][i][t];
        if (res[u] == res[v]) continue;
        qhd(v);
        if (ans[v] > cans[u]) {
          cans[u] = ans[v];
          ans[u] = cans[v];
        } else if (cans[u] == ans[v] && ans[u] > cans[v])
          ans[u] = cans[v];
      }
  if (ans[u] == -1) ans[u] = 0;
  if (cans[u] == -1) cans[u] = 0;
  ans[u] += cost;
}
int main() {
  cin >> n;
  for (long i = 1; i <= n; i++) {
    cin >> s[i];
    chuoi.clear();
    for (long d = s[i].length(); d >= 1; d--) {
      for (long u = 0; u <= s[i].length() - d; u++) {
        x = s[i].substr(u, d);
        chuoi.push_back(x);
      }
    }
    sort(chuoi.begin(), chuoi.end());
    push(chuoi[0]);
    for (long i = 1; i <= chuoi.size() - 1; i++)
      if (chuoi[i] != chuoi[i - 1]) push(chuoi[i]);
  }
  for (long i = 1; i <= n; i++) {
    string ss = s[i];
    for (long d = ss.length() - 1; d >= 1; d--) {
      for (long u = 0; u <= ss.length() - d; u++) {
        long v = u + d - 1;
        x = ss.substr(u, d);
        long t = get(x);
        if (v + 1 < ss.length() && !canh[t][ss[v + 1] - 'a'][0]) {
          y = ss.substr(u, d + 1);
          long tt = get(y);
          canh[t][ss[v + 1] - 'a'][0] = tt;
        }
        if (u > 0 && !canh[t][ss[u - 1] - 'a'][1]) {
          y = ss.substr(u - 1, d + 1);
          long tt = get(y);
          canh[t][ss[u - 1] - 'a'][1] = tt;
        }
      }
    }
  }
  for (long i = 1; i <= nn; i++) res[i] = -inf;
  kq = -1;
  for (char c = 'a'; c <= 'z'; c++) {
    x = c;
    long u = get(x);
    if (!u) continue;
    kq = max(dp(u), kq);
  }
  if (kq == 1)
    cout << "First" << endl;
  else
    cout << "Second" << endl;
  for (long i = 1; i <= nn; i++) ans[i] = -inf;
  long tl = -inf;
  long tll;
  for (char c = 'a'; c <= 'z'; c++) {
    x = c;
    long u = get(x);
    if (!u) continue;
    if (res[u] != kq) continue;
    qhd(u);
    long t = ans[u];
    if (t > tl) {
      tl = t;
      tll = cans[u];
    } else if (t == tl && cans[u] < tll)
      tll = cans[u];
  }
  cout << tl << " " << tll << endl;
  return 0;
}
