#include <bits/stdc++.h>
using namespace std;
const int MN = 30000;
map<string, int> si;
map<int, string> is;
int n, con = 1;
string dic[MN];
pair<int, pair<int, int> > d[MN][2];
int mark[MN][2];
int sc[MN];
vector<int> l[MN];
set<int> nums[MN];
int num[MN];
pair<int, pair<int, int> > memz(int st, int p) {
  if (mark[st][p]) {
    return d[st][p];
  } else {
    mark[st][p] = 1;
    pair<int, pair<int, int> > Bst = pair<int, pair<int, int> >(
                                   0, pair<int, int>(0, 0)),
                               rs;
    for (int i = 0; i < l[st].size(); i++) {
      rs = memz(l[st][i], !p);
      rs.first = !rs.first;
      swap(rs.second.first, rs.second.second);
      rs.second.second *= -1;
      rs.second.first *= -1;
      rs.second.first += sc[l[st][i]];
      Bst = max(Bst, rs);
      rs = memz(l[st][i], !p);
      rs.first = !rs.first;
      swap(rs.second.first, rs.second.second);
      rs.second.second *= -1;
      rs.second.first *= -1;
      rs.second.first += sc[l[st][i]];
      Bst = max(Bst, rs);
    }
    d[st][p] = Bst;
    return Bst;
  }
}
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> dic[i];
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < dic[i].size(); j++) {
      string x = "";
      for (int r = j + 1; r <= dic[i].size(); r++) {
        x += dic[i][r - 1];
        if (si.find(x) == si.end()) {
          si[x] = con++;
          is[con - 1] = x;
          nums[con - 1].insert(i);
          ;
        } else {
          nums[si[x]].insert(i);
        }
      }
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < dic[i].size(); j++) {
      string x = "";
      for (int r = j + 1; r <= dic[i].size(); r++) {
        x += dic[i][r - 1];
        int X = si[x];
        if (r < dic[i].size()) {
          l[X].push_back(si[x + dic[i][r]]);
        }
        if (j > 0) {
          l[X].push_back(si[dic[i][j - 1] + x]);
        }
      }
    }
  }
  si[""] = 0;
  is[0] = "";
  for (int i = 'a'; i <= 'z'; i++) {
    string x;
    x += char(i);
    if (si.find(x) != si.end()) {
      l[0].push_back(si[x]);
    }
  }
  for (int i = 1; i < con; i++) {
    string x = is[i];
    int score = 0;
    int Max = 1;
    for (int i = 0; i < x.size(); i++) {
      score += x[i] - 'a' + 1;
      Max = max(Max, x[i] - 'a' + 1);
    }
    score *= Max;
    score += nums[i].size();
    sc[i] = score;
  }
  pair<int, pair<int, int> > v = memz(0, 0);
  if (v.first == 1) {
    cout << "First" << endl;
  } else {
    cout << "Second" << endl;
  }
  cout << v.second.first << " " << v.second.second * -1 << endl;
  return 0;
}
