#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:50000000")
using namespace std;
const long long MOD = 1000000007;
int n;
vector<pair<string, int> > A;
string S[30];
int Score[20000], C[20000];
map<string, int> AA;
map<pair<string, bool>, pair<bool, int> > M;
pair<bool, int> solve(string s, bool step) {
  if (M.find(make_pair(s, step)) != M.end()) return M[make_pair(s, step)];
  pair<bool, pair<int, int> > res;
  res.first = false;
  res.second.first = 0;
  res.second.second = 0;
  int count = 0;
  for (int i = 'a'; i < 'z' + 1; i++) {
    string next = "";
    next += char(i);
    next += s;
    if (AA.find(next) != AA.end()) {
      pair<bool, int> t;
      t = solve(next, 1);
      pair<bool, int> tt;
      tt = solve(next, 0);
      if (t.first == true) {
        if (res.first == false) {
          res.second.first = 0;
          res.second.second = 0;
        }
        res.first = true;
        if (res.second.first < t.second + AA[next]) {
          res.second.first = t.second + AA[next];
          res.second.second = tt.second;
        } else if (res.second.first == t.second + AA[next] &&
                   res.second.second > tt.second) {
          res.second.second = tt.second;
        }
      } else if (t.first == false && res.first == false) {
        if (res.second.first < t.second + AA[next]) {
          res.second.first = t.second + AA[next];
          res.second.second = tt.second;
        } else if (res.second.first == t.second + AA[next] &&
                   res.second.second > tt.second) {
          res.second.second = tt.second;
        }
      }
      count++;
    }
  }
  for (int i = 'a'; i < 'z' + 1; i++) {
    string next = "";
    next += s;
    next += char(i);
    if (AA.find(next) != AA.end()) {
      pair<bool, int> t;
      t = solve(next, 1);
      pair<bool, int> tt;
      tt = solve(next, 0);
      if (t.first == true) {
        if (res.first == false) {
          res.second.first = 0;
          res.second.second = 0;
        }
        res.first = true;
        if (res.second.first < t.second + AA[next]) {
          res.second.first = t.second + AA[next];
          res.second.second = tt.second;
        } else if (res.second.first == t.second + AA[next] &&
                   res.second.second > tt.second) {
          res.second.second = tt.second;
        }
      } else if (t.first == false && res.first == false) {
        if (res.second.first < t.second + AA[next]) {
          res.second.first = t.second + AA[next];
          res.second.second = tt.second;
        } else if (res.second.first == t.second + AA[next] &&
                   res.second.second > tt.second) {
          res.second.second = tt.second;
        }
      }
      count++;
    }
  }
  if (res.second.first == -1) {
    res.first = 0;
    res.second.first = 0;
    res.second.second = 0;
  }
  M[make_pair(s, false)] = make_pair(res.first, res.second.first);
  M[make_pair(s, true)] = make_pair(!res.first, res.second.second);
  return M[make_pair(s, step)];
}
bool comp(pair<string, int> i, pair<string, int> j) {
  if (i.first.size() < j.first.size()) return true;
  if (i.first.size() > j.first.size()) return false;
  return i.first < j.first;
}
bool B[30];
int main() {
  cin >> n;
  for (int t = 0; t < n; t++) {
    cin >> S[t];
    for (int i = 0; i < S[t].size(); i++)
      for (int j = 0; j < i + 1; j++)
        A.push_back(make_pair(S[t].substr(j, i - j + 1), t));
  }
  A.push_back(make_pair("", -1));
  sort(A.begin(), A.end(), comp);
  int i = 0;
  while (i < A.size()) {
    int j = 1;
    while (i + j < A.size() && A[i + j].first == A[i].first) j++;
    if (A[i].second != -1) {
      memset(B, false, sizeof(B));
      for (int k = i; k < i + j; k++) B[A[k].second] = true;
      int c = 0;
      for (int k = 0; k < n; k++)
        if (B[k]) c++;
      for (int k = i; k < i + j; k++) C[k] = c;
    }
    i += j;
  }
  for (int i = 0; i < A.size(); i++) {
    if (!A[i].first.empty()) {
      Score[i] = 0;
      int p = 0, pp = 0;
      for (int j = 0; j < A[i].first.size(); j++) {
        p += A[i].first[j] - 'a' + 1;
        pp = max(pp, (int)A[i].first[j] - (int)'a' + 1);
      }
      Score[i] = p * pp + C[i];
      AA[A[i].first] = Score[i];
    }
  }
  pair<bool, int> t;
  t = solve("", false);
  if (t.first == 1)
    cout << "First" << endl;
  else
    cout << "Second" << endl;
  cout << t.second << ' ';
  t = solve("", true);
  cout << t.second << endl;
  return 0;
}
