#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:20000000")
string problem_name = "a";
void init() { freopen((problem_name + ".in").c_str(), "rt", stdin); }
map<string, int> mp;
set<string> ss;
int calc(string s) {
  int res = 0;
  int mx = 0;
  for (int i = 0; i < int((s).size()); i++) {
    res += s[i] - 'a' + 1;
    mx = max(mx, s[i] - 'a' + 1);
  }
  res *= mx;
  res += mp[s];
  return res;
}
struct st {
  int w, f, s;
};
map<string, st> dp;
map<string, bool> u;
st upd(st a, st b, int o) {
  if (a.w == -1) return b;
  if (a.w == 0) {
    if (b.w == 1) return b;
    if (o) {
      if (a.s < b.s)
        return b;
      else if (a.s == b.s && a.f > b.f)
        return b;
      return a;
    } else {
      if (a.f < b.f)
        return b;
      else if (a.f == b.f && a.s > b.s)
        return b;
      return a;
    }
  } else {
    if (b.w == 0) return a;
    if (o) {
      if (a.s < b.s)
        return b;
      else if (a.s == b.s && a.f > b.f)
        return b;
      return a;
    } else {
      if (a.f < b.f)
        return b;
      else if (a.f == b.f && a.s > b.s)
        return b;
      return a;
    }
  }
}
st go(string s) {
  if (u[s]) return dp[s];
  u[s] = 1;
  st res;
  res.w = -1;
  for (int i = 'a'; i <= 'z'; i++) {
    string t = string(1, i) + s;
    if (mp[t]) {
      st cur = go(t);
      cur.w = 1 - cur.w;
      if (int((s).size()) % 2)
        cur.s += calc(t);
      else
        cur.f += calc(t);
      res = upd(res, cur, int((s).size()) & 1);
    }
    t = s + string(1, i);
    if (mp[t]) {
      st cur = go(t);
      cur.w = 1 - cur.w;
      if (int((s).size()) % 2)
        cur.s += calc(t);
      else
        cur.f += calc(t);
      res = upd(res, cur, int((s).size()) & 1);
    }
  }
  if (res.w == -1) {
    res.w = res.f = res.s = 0;
    res.w = 0;
  }
  return dp[s] = res;
}
int main() {
  int n;
  scanf("%d\n", &n);
  char str[1010];
  while (n--) {
    gets(str);
    string s = str;
    ss.clear();
    for (int i = 0; i < int((s).size()); i++)
      for (int j = i; j < int((s).size()); j++) {
        string t = s.substr(i, j - i + 1);
        if (ss.find(t) == ss.end()) {
          ss.insert(t);
          mp[t]++;
        }
      }
  };
  st r = go("");
  if (r.w)
    printf("First\n");
  else
    printf("Second\n");
  printf("%d %d\n", r.f, r.s);
  return 0;
}
