#include <bits/stdc++.h>
using std::abs;
using std::bitset;
using std::cerr;
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::fill;
using std::fixed;
using std::greater;
using std::lower_bound;
using std::map;
using std::max;
using std::min;
using std::next_permutation;
using std::pair;
using std::priority_queue;
using std::queue;
using std::reverse;
using std::rotate;
using std::set;
using std::sort;
using std::string;
using std::swap;
using std::tie;
using std::tuple;
using std::unique;
using std::unordered_map;
using std::unordered_set;
using std::upper_bound;
using std::vector;
int const INF = (int)1e9;
long long const INFL = (long long)1e18;
long double const PI = 3.1415926535897932384626433832795028;
int const N = 33;
struct State {
  int win, my, his;
};
bool compare(State const& a, State const& b) {
  if (a.win != b.win) return a.win < b.win;
  if (a.my != b.my) return a.my < b.my;
  return a.his > b.his;
}
std::ostream& operator<<(std::ostream& os, State const& st) {
  return os << "state: win = " << st.win << ", my = " << st.my
            << ", his = " << st.his;
}
State const worst = {0, 0, 0};
void solve() {
  int n;
  cin >> n;
  unordered_map<string, int> subs;
  subs[string()] = 0;
  vector<unordered_set<string>> len2s(N);
  len2s[0].insert("");
  for (int i = 0; i < n; ++i) {
    string s;
    cin >> s;
    unordered_set<string> cur;
    for (int x = 0; x < (int)s.size(); ++x) {
      string t;
      for (int y = x; y < (int)s.size(); ++y) {
        t += s[y];
        cur.insert(t);
      }
    }
    for (string s : cur) {
      len2s[s.size()].insert(s);
      ++subs[s];
    }
  }
  unordered_map<string, int> sum, ma;
  sum[""] = 0;
  ma[""] = 0;
  for (int len = 1; len < N; ++len) {
    for (string s : len2s[len]) {
      int last = s.back() - 'a' + 1;
      string p = s.substr(0, s.size() - 1U);
      sum[s] = sum[p] + last;
      ma[s] = max(ma[p], last);
    }
  }
  unordered_map<string, State> dp;
  for (int len = N - 1; len >= 0; --len) {
    for (string s : len2s[len]) {
      State res = worst;
      for (char x = 'a'; x <= 'z'; ++x) {
        for (string t : {s + x, x + s}) {
          if (subs.count(t)) {
            State next = dp[t];
            int score = sum[t] * ma[t] + subs[t];
            State now = {!next.win, next.his + score, next.my};
            res = max(res, now, compare);
          }
        }
      }
      dp[s] = res;
    }
  }
  State ans = dp[string()];
  cout << (ans.win ? "First" : "Second") << endl;
  cout << ans.my << " " << ans.his << endl;
}
int main() { solve(); }
