#include <bits/stdc++.h>
using namespace std;
struct st {
  set<string> t;
  set<int> g;
  int r, s1, s2, u;
};
int n, mx;
string v;
vector<string> s;
vector<map<string, st> > a;
void rq(string p, int q) {
  a[p.size()][p].g.insert(q);
  if (p.size() > 1) {
    a[p.size() - 1][p.substr(0, p.size() - 1)].t.insert(p);
    a[p.size() - 1][p.substr(1, p.size() - 1)].t.insert(p);
  } else
    a[0][""].t.insert(p);
}
int vl(string p) {
  if (p == "") return 0;
  int q(0);
  for (int i = 0; i < p.size(); i++) q += p[i] - 96;
  return q * (*max_element(p.begin(), p.end()) - 96);
}
int main() {
  cin >> n;
  s.resize(n);
  for (int i = 0; i < n; i++) cin >> s[i];
  mx = s[0].size();
  for (int i = 1; i < n; i++) mx = max(mx, (int)s[i].size());
  a.resize(mx + 1);
  for (int i = 0; i < n; i++) {
    rq(s[i], i);
    for (int j = s[i].size() - 1; j > 0; j--)
      for (int k = 0; k <= s[i].size() - j; k++) rq(s[i].substr(k, j), i);
  }
  for (int i = mx; i >= 0; i--)
    for (map<string, st>::iterator j = a[i].begin(); j != a[i].end(); j++) {
      (*j).second.u = vl((*j).first) + (*j).second.g.size();
      if ((*j).second.t.size() == 0) {
        if (i % 2) {
          (*j).second.r = 1;
          (*j).second.s1 = (*j).second.u;
          (*j).second.s2 = 0;
        } else {
          (*j).second.r = -1;
          (*j).second.s1 = 0;
          (*j).second.s2 = (*j).second.u;
        }
      } else {
        v = *(*j).second.t.begin();
        (*j).second.r = a[v.size()][v].r;
        (*j).second.s1 = a[v.size()][v].s1;
        (*j).second.s2 = a[v.size()][v].s2;
        if (i % 2) {
          for (set<string>::iterator k = (*j).second.t.begin();
               k != (*j).second.t.end(); k++)
            if (a[(*k).size()][*k].r < (*j).second.r ||
                a[(*k).size()][*k].r == (*j).second.r &&
                    (a[(*k).size()][*k].s2 > (*j).second.s2 ||
                     a[(*k).size()][*k].s2 == (*j).second.s2 &&
                         a[(*k).size()][*k].s1 < (*j).second.s1)) {
              (*j).second.r = a[(*k).size()][*k].r;
              (*j).second.s1 = a[(*k).size()][*k].s1;
              (*j).second.s2 = a[(*k).size()][*k].s2;
            }
          (*j).second.s1 += (*j).second.u;
        } else {
          for (set<string>::iterator k = (*j).second.t.begin();
               k != (*j).second.t.end(); k++)
            if (a[(*k).size()][*k].r > (*j).second.r ||
                a[(*k).size()][*k].r == (*j).second.r &&
                    (a[(*k).size()][*k].s1 > (*j).second.s1 ||
                     a[(*k).size()][*k].s1 == (*j).second.s1 &&
                         a[(*k).size()][*k].s2 < (*j).second.s2)) {
              (*j).second.r = a[(*k).size()][*k].r;
              (*j).second.s1 = a[(*k).size()][*k].s1;
              (*j).second.s2 = a[(*k).size()][*k].s2;
            }
          (*j).second.s2 += (*j).second.u;
        }
      }
    }
  if (a[0][""].r == 1)
    cout << "First";
  else
    cout << "Second";
  cout << "\n" << a[0][""].s1 << " " << a[0][""].s2;
  return 0;
}
