#include <bits/stdc++.h>
using namespace std;
const int dr[] = {0, -1, 0, 1, -1, 1, 1, -1};
const int dc[] = {1, 0, -1, 0, 1, 1, -1, -1};
const double eps = 1e-9;
template <class T>
void print(const vector<T> &v) {
  ostringstream os;
  for (int i = 0; i < v.size(); ++i) {
    if (i) os << ' ';
    os << v[i];
  }
  cout << os.str() << endl;
}
template <class T>
int sz(const T &c) {
  return (int)c.size();
}
template <class T>
void srt(T &c) {
  sort(c.begin(), c.end());
}
template <class T>
void checkmin(T &a, T b) {
  if (b < a) a = b;
}
template <class T>
void checkmax(T &a, T b) {
  if (b > a) a = b;
}
template <class T>
T sqr(T x) {
  return x * x;
}
template <class T, class U>
T cast(U x) {
  ostringstream os;
  os << x;
  T res;
  istringstream is(os.str());
  is >> res;
  return res;
}
template <class T>
vector<T> split(string s, string x = " ") {
  vector<T> res;
  for (int i = 0; i < s.size(); i++) {
    string a;
    while (i < (int)s.size() && x.find(s[i]) == string::npos) a += s[i++];
    if (!a.empty()) res.push_back(cast<T>(a));
  }
  return res;
}
template <class T>
bool inside(T r, T c, T R, T C) {
  return r >= 0 && r < R && c >= 0 && c < C;
}
vector<string> a;
map<string, pair<int, pair<int, int> > > cache;
map<string, int> cache2;
int count(string &s) {
  if (cache2.count(s)) return cache2[s];
  int &res = cache2[s];
  res = 0;
  for (int i(0), _b(sz(a) - 1); i <= _b; ++i) {
    if (a[i].find(s) != -1) ++res;
  }
  int sum = 0, mx = 0;
  for (int i(0), _b(sz(s) - 1); i <= _b; ++i) {
    sum += s[i] - 'a' + 1;
    checkmax(mx, s[i] - 'a' + 1);
  }
  res += sum * mx;
  return res;
}
pair<int, pair<int, int> > f(string s);
void check(pair<int, pair<int, int> > &res, string &s) {
  pair<int, pair<int, int> > cur = f(s);
  swap(cur.second.first, cur.second.second);
  cur.first *= -1;
  cur.second.first *= -1;
  cur.second.second *= -1;
  cur.second.first += count(s);
  checkmax(res, cur);
}
pair<int, pair<int, int> > f(string s) {
  if (cache.count(s)) return cache[s];
  pair<int, pair<int, int> > &res = cache[s];
  res = make_pair(-1, make_pair(0, 0));
  for (int i(0), _b(sz(a) - 1); i <= _b; ++i) {
    int p = -1;
    while (1) {
      p = a[i].find(s, p + 1);
      if (p == -1) break;
      if (p) {
        string ns = a[i][p - 1] + s;
        check(res, ns);
      }
      if (p + sz(s) < sz(a[i])) {
        string ns = s + a[i][p + sz(s)];
        check(res, ns);
      }
    }
  }
  return res;
}
int main(int argc, char *argv[]) {
  int n;
  cin >> n;
  a.resize(n);
  for (int i(0), _n(n); i < _n; ++i) cin >> a[i];
  pair<int, pair<int, int> > res = f("");
  if (res.first > 0) {
    cout << "First" << endl;
    cout << res.second.first << " " << -res.second.second << endl;
  } else {
    cout << "Second" << endl;
    cout << res.second.first << " " << -res.second.second << endl;
  }
  return 0;
}
