#include <bits/stdc++.h>
using namespace std;
struct state {
  bool win;
  int first, second;
  state() : win(false), first(0), second(1e9){};
  state(bool nwin, int nfirst, int nsecond)
      : win(nwin), first(nfirst), second(nsecond){};
};
bool operator<(state a, state b) {
  return !(a.win > b.win ||
           a.win == b.win && (a.first > b.first ||
                              a.first == b.first && a.second < b.second));
}
vector<string> dict;
int exist(string word) {
  int res = 0;
  for (vector<string>::iterator(i) = (dict).begin(); (i) < (dict).end(); ++(i))
    if ((*i).find(word) != string::npos) ++res;
  return res;
}
int score(string word) {
  if (word == "") return 0;
  int num = exist(word), value = 0, maxvalue = 0;
  if (num == 0) return -1;
  for (string::iterator(i) = (word).begin(); (i) < (word).end(); ++(i)) {
    value += (*i) - 'a' + 1;
    maxvalue = max((*i) - 'a' + 1, maxvalue);
  }
  return value * maxvalue + num;
}
map<string, state> d;
state find(string s) {
  if (score(s) == -1) return state(false, 0, 0);
  if (d.find(s) != d.end()) return d[s];
  state res(false, 0, 1e9);
  for (int i = 'a'; i <= 'z'; ++i)
    res = max(res, max(find(char(i) + s), find(s + char(i))));
  d[s] = state(res.win ^ 1, res.second + score(s), res.first);
  return d[s];
}
int main() {
  int n;
  cin >> n;
  for (int i = 0; i < n; ++i) {
    string s;
    cin >> s;
    dict.push_back(s);
  }
  state ans = find("");
  cout << (ans.win ? "Second\n" : "First\n") << ans.second << ' ' << ans.first;
  return 0;
}
