#include <bits/stdc++.h>
using namespace std;
int n;
int sval[27001], mval[27001], no, num[27001], tag[27001];
struct txt {
  int id, num, l;
};
map<string, txt> M;
pair<int, string> P[27001];
map<string, txt>::iterator it;
set<string> S;
string s[32], tmp1;
vector<int> e[27001];
pair<int, pair<int, int> > dp[27001];
pair<int, pair<int, int> > dfs(int now, int lv) {
  pair<int, pair<int, int> > sv1 = make_pair(lv ^ 1, pair<int, int>(0, 0)), sv2;
  tag[now] = 1;
  int win = lv;
  for (int i = 0; i < e[now].size(); i++) {
    int x = e[now][i];
    if (!tag[e[now][i]])
      sv2 = dfs(x, lv ^ 1);
    else
      sv2 = dp[x];
    if (lv == 0) {
      sv2.second.first += sval[x] * mval[x] + num[x];
      if (sv1.first != lv && sv2.first == lv)
        sv1 = sv2;
      else if (sv1.first == sv2.first &&
               (sv1.second.first < sv2.second.first ||
                (sv1.second.first == sv2.second.first &&
                 sv1.second.second > sv2.second.second)))
        sv1 = sv2;
    } else {
      sv2.second.second += sval[x] * mval[x] + num[x];
      if (sv1.first != lv && sv2.first == lv) sv1 = sv2;
      if (sv1.first == sv2.first && (sv1.second.second < sv2.second.second ||
                                     (sv1.second.second == sv2.second.second &&
                                      sv1.second.first > sv2.second.first)))
        sv1 = sv2;
    }
  }
  dp[now] = sv1;
  return sv1;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    cin >> s[i];
    S.clear();
    for (int k = 0; k < s[i].length(); k++)
      for (int j = 1; k + j <= s[i].length(); j++) {
        tmp1 = s[i].substr(k, j);
        if (!S.count(tmp1)) {
          S.insert(tmp1);
          M[tmp1].num++;
          M[tmp1].l = j;
        }
      }
  }
  M[""].num = 0;
  for (it = M.begin(); it != M.end(); it++)
    P[no++] = make_pair((it->second).l, it->first);
  sort(P, P + no);
  for (int i = 0; i < no; i++) M[P[i].second].id = i;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < s[i].length(); j++)
      for (int k = 1; k + j <= s[i].length(); k++) {
        int _id = M[s[i].substr(j, k)].id;
        e[M[s[i].substr(j + 1, k - 1)].id].push_back(_id);
        e[M[s[i].substr(j, k - 1)].id].push_back(_id);
        if (sval[_id] == 0) {
          for (int r1 = 0; r1 < k; r1++) {
            sval[_id] += s[i][j + r1] - 'a' + 1;
            mval[_id] = max(mval[_id], s[i][j + r1] - 'a' + 1);
          }
        }
        num[_id] = M[s[i].substr(j, k)].num;
      }
  }
  pair<int, pair<int, int> > ans = dfs(0, 0);
  printf((ans.first == 1 ? "Second" : "First"));
  printf("\n%d %d\n", ans.second.first, ans.second.second);
  return 0;
}
