#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:134217728")
using namespace std;
int n;
map<string, int> M;
map<string, int> ID;
int last[1 << 14];
int score[1 << 14];
vector<int> G[1 << 14];
pair<int, int> dp[1 << 14];
pair<int, int> go(int x) {
  pair<int, int>& res = dp[x];
  if (res.first != -1) return res;
  if (G[x].size() == 0) return res = make_pair(0, -(int)1e9);
  for (int i = 0; i < G[x].size(); ++i) {
    int to = G[x][i];
    pair<int, int> next = go(to);
    swap(next.first, next.second);
    next.first = -next.first;
    next.second = -next.second;
    next.first += score[to];
    res = max(res, next);
  }
  return res;
}
int main() {
  cin >> n;
  ID[""] = 0;
  memset(last, -1, sizeof(last));
  for (int i = 0; i < n; ++i) {
    string s;
    cin >> s;
    for (int j = 0; j < s.size(); ++j) {
      for (int k = 1; k <= (int)s.size() - j; ++k) {
        string ss = s.substr(j, k);
        if (!ID.count(ss)) ID[ss] = ID.size();
        int id = ID[ss];
        if (last[id] != i) {
          M[ss]++;
          last[id] = i;
        }
      }
    }
  }
  for (map<string, int>::iterator it = M.begin(); it != M.end(); ++it) {
    string s = it->first;
    int v = 0;
    for (int i = 0; i < s.size(); ++i) v += 1 + s[i] - 'a';
    score[ID[s]] =
        v * (*max_element(s.begin(), s.end()) - 'a' + 1) + it->second;
    for (char c = 'a'; c <= 'z'; ++c) {
      string ss = s + c;
      if (ID.count(ss)) G[ID[s]].push_back(ID[ss]);
      ss = c + s;
      if (ID.count(ss)) G[ID[s]].push_back(ID[ss]);
    }
  }
  for (char c = 'a'; c <= 'z'; ++c) {
    string s = "";
    s += c;
    if (ID.count(s)) G[0].push_back(ID[s]);
  }
  for (int i = 0; i < 1 << 14; ++i) dp[i] = make_pair(-1, -1);
  pair<int, int> p = go(0);
  if (p.first >= (int)1e9) {
    cout << "First" << endl;
    p.first -= (int)1e9;
  } else {
    cout << "Second" << endl;
    p.second += (int)1e9;
  }
  cout << abs(p.first) << " " << abs(p.second) << endl;
  return 0;
}
