#include <bits/stdc++.h>
using namespace std;
vector<string> words;
int getscore(string s) {
  int ma = *(max_element(s.begin(), s.end())) - 'a' + 1;
  int ans = 0;
  for (int i = 0; i < s[i]; ++i) {
    ans += 1 + s[i] - 'a';
  }
  ans *= ma;
  for (int i = 0; i < words.size(); ++i) {
    if (words[i].find(s) != words[i].npos) {
      ans++;
    }
  }
  return ans;
}
int main() {
  int n;
  cin >> n;
  vector<set<string> > wordsperlen(31);
  map<string, pair<int, pair<int, int> > > wordstat;
  wordsperlen[0].insert(string());
  words.resize(n);
  map<string, int> scores;
  for (int i = 0; i < n; ++i) {
    cin >> words[i];
  }
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < words[i].size(); ++j) {
      for (int k = 1; k + j <= words[i].size(); ++k) {
        string s = words[i].substr(j, k);
        wordsperlen[s.size()].insert(s);
        scores[s] = getscore(s);
      }
    }
  }
  for (int len = 30; len >= 0; --len) {
    for (set<string>::iterator it = wordsperlen[len].begin();
         it != wordsperlen[len].end(); ++it) {
      pair<int, pair<int, int> > def(0, pair<int, int>(0, -1000000000));
      pair<int, pair<int, int> > cur = def;
      for (int p = 0; p < 2; ++p) {
        for (char c = 'a'; c <= 'z'; ++c) {
          string s;
          if (p)
            s = c + *it;
          else
            s = *it + c;
          if (wordstat.count(s)) {
            pair<int, pair<int, int> > state = wordstat[s];
            swap(state.second.first, state.second.second);
            state.second.first *= -1;
            state.second.second *= -1;
            state.first = 1 - state.first;
            state.second.first += scores[s];
            cur = max(cur, state);
          }
        }
      }
      if (cur == def) cur.second.second = 0;
      wordstat[*it] = cur;
    }
  }
  if (wordstat[""].first)
    cout << "First" << endl;
  else
    cout << "Second" << endl;
  cout << wordstat[""].second.first << " " << -wordstat[""].second.second
       << endl;
  return 0;
}
