#include <bits/stdc++.h>
using namespace std;
template <class T>
inline int countbit(T n) {
  return (n == 0) ? 0 : (1 + countbit(n & (n - 1)));
}
template <class T>
inline T gcd(T a, T b) {
  return b ? gcd(b, a % b) : a;
}
const double EPS = 1e-9;
const double PI = acos(-1.0);
map<string, int> ocurr;
map<string, int> dp;
map<string, pair<int, int> > rr;
pair<int, int> res;
int calc(string &s) {
  int sum = 0;
  int mx = 0;
  for (int i = 0; i < s.size(); i++) {
    sum += (s[i] - 'a' + 1);
    mx = max(mx, (s[i] - 'a' + 1));
  }
  sum *= mx;
  sum += ocurr[s];
  return sum;
}
int go(string s) {
  if (dp.find(s) != dp.end()) return dp[s];
  pair<int, int> best(-1, -1);
  pair<int, int> losing(0, 0);
  for (char c = 'a'; c <= 'z'; c++) {
    string a1 = c + s;
    if (ocurr.find(a1) != ocurr.end()) {
      if (!go(a1)) {
        pair<int, int> aux = rr[a1];
        if ((int)s.size() % 2 == 0) {
          aux.first += calc(a1);
          if (best.first < aux.first or
              (best.first == aux.first && best.second > aux.second))
            best = aux;
        } else {
          aux.second += calc(a1);
          if (best.second < aux.second or
              (best.second == aux.second && best.first > aux.first))
            best = aux;
        }
      } else {
        pair<int, int> aux = rr[a1];
        if ((int)s.size() % 2 == 0) {
          aux.first += calc(a1);
          if (losing.first < aux.first or
              (losing.first == aux.first && losing.second > aux.second))
            losing = aux;
        } else {
          aux.second += calc(a1);
          if (losing.second < aux.second or
              (losing.second == aux.second && losing.first > aux.first))
            losing = aux;
        }
      }
    }
    a1 = s + c;
    if (ocurr.find(a1) != ocurr.end()) {
      if (!go(a1)) {
        pair<int, int> aux = rr[a1];
        if ((int)s.size() % 2 == 0) {
          aux.first += calc(a1);
          if (best.first < aux.first or
              (best.first == aux.first && best.second > aux.second))
            best = aux;
        } else {
          aux.second += calc(a1);
          if (best.second < aux.second or
              (best.second == aux.second && best.first > aux.first))
            best = aux;
        }
      } else {
        pair<int, int> aux = rr[a1];
        if ((int)s.size() % 2 == 0) {
          aux.first += calc(a1);
          if (losing.first < aux.first or
              (losing.first == aux.first && losing.second > aux.second))
            losing = aux;
        } else {
          aux.second += calc(a1);
          if (losing.second < aux.second or
              (losing.second == aux.second && losing.first > aux.first))
            losing = aux;
        }
      }
    }
  }
  if (best.first > -1) {
    rr[s] = best;
    return dp[s] = 1;
  } else {
    rr[s] = losing;
    return dp[s] = 0;
  }
}
int main() {
  int i, j, k;
  int N;
  cin >> N;
  string s;
  for (i = 0; i < N; i++) {
    cin >> s;
    map<string, bool> done;
    for (j = 0; j < s.size(); j++) {
      for (k = j; k < s.size(); k++) {
        string a = s.substr(j, k - j + 1);
        if (done[a]) continue;
        done[a] = true;
        ocurr[a]++;
      }
    }
  }
  if (go("")) {
    cout << "First" << endl;
  } else
    cout << "Second" << endl;
  res = rr[""];
  cout << res.first << " " << res.second << endl;
  return 0;
}
