#include <bits/stdc++.h>
using namespace std;
inline int value(char c) { return c - 'a' + 1; }
string w[30];
map<string, int> score;
map<string, pair<int, pair<int, int> > > dp;
pair<int, pair<int, int> > DFS(const string &s) {
  if (dp.count(s) != 0) {
    return dp[s];
  }
  pair<int, pair<int, int> > &ret = dp[s];
  ret = pair<int, pair<int, int> >(-1, pair<int, int>(0, 0));
  string t;
  pair<int, pair<int, int> > tmp;
  for (char c = 'a'; c <= 'z'; c++) {
    for (int d = 0; d < 2; d++) {
      t = d ? (c + s) : (s + c);
      map<string, int>::iterator it = score.find(t);
      if (it != score.end()) {
        tmp = DFS(t);
        tmp = pair<int, pair<int, int> >(
            tmp.first * -1,
            pair<int, int>(-tmp.second.second + it->second, -tmp.second.first));
        ret = max(ret, tmp);
      }
    }
  }
  return ret;
}
int main() {
  int n;
  while (cin >> n) {
    score.clear();
    for (int i = 0; i < n; i++) {
      cin >> w[i];
    }
    score.clear();
    for (int i = 0; i < n; i++) {
      int len = w[i].length();
      for (int j = 0; j < len; j++) {
        for (int k = 1; j + k <= len; k++) {
          score[w[i].substr(j, k)] |= (1 << i);
        }
      }
    }
    for (map<string, int>::iterator it = score.begin(); it != score.end();
         it++) {
      int cb = 0;
      for (int i = 0; i < n; i++) {
        cb += ((it->second & (1 << i)) != 0);
      }
      int len = it->first.length();
      int sum = 0, maxvalue = 0;
      for (int i = 0; i < len; i++) {
        int v = value(it->first[i]);
        sum += v;
        maxvalue = max(maxvalue, v);
      }
      it->second = sum * maxvalue + cb;
    }
    dp.clear();
    pair<int, pair<int, int> > ans = DFS("");
    puts(ans.first == 1 ? "First" : "Second");
    printf("%d %d\n", ans.second.first, -ans.second.second);
  }
  return 0;
}
