#include <bits/stdc++.h>
using namespace std;
string T[30];
map<string, vector<int>> dp;
map<string, pair<int, int>> V;
int n;
int getScore(string s) {
  int m = -1, sum = 0;
  for (int i = 0; i < (int)s.length(); i++) {
    int val = s[i] - 'a' + 1;
    sum += val;
    if (m == -1 || val > m) m = val;
  }
  map<string, pair<int, int>>::iterator it = V.find(s);
  int k = it == V.end() ? 0 : it->second.first;
  return sum * m + k;
}
bool have(string s) { return V.find(s) != V.end(); }
vector<int> DP(string s) {
  if (dp.find(s) != dp.end()) return dp[s];
  vector<int> ans(3, 0);
  for (int p = 1; p <= 2; p++)
    for (char i = 'a'; i <= 'z'; i++) {
      string t = p == 1 ? i + s : s + i;
      if (!have(t)) continue;
      int sc = getScore(t);
      vector<int> tp = DP(t);
      tp[0] = 1 - tp[0];
      swap(tp[1], tp[2]);
      tp[1] = -tp[1] + sc;
      tp[2] = -tp[2];
      ans = max(ans, tp);
    }
  return dp[s] = ans;
}
int main() {
  cin >> n;
  for (int k = 0; k < n; k++) {
    cin >> T[k];
    int len = (int)T[k].length();
    for (int i = 0; i < len; i++) {
      string s = "";
      for (int j = 0; i + j < len; j++) {
        s += T[k][i + j];
        map<string, pair<int, int>>::iterator it = V.find(s);
        if (it == V.end())
          V[s] = pair<int, int>(1, k);
        else if (it->second.second < k) {
          it->second.first++;
          it->second.second = k;
        }
      }
    }
  }
  vector<int> ans(3, 0);
  ans = DP("");
  if (ans[0])
    cout << "First";
  else
    cout << "Second";
  cout << endl << ans[1] << " " << -ans[2] << endl;
  return 0;
}
