#include <bits/stdc++.h>
using namespace std;
struct block {
  bool f;
  int x, y;
  block() {
    f = true;
    x = y = 0;
  }
};
vector<string> vs;
map<string, block> used;
set<char> st;
block make_block(int f, int x, int y) {
  block q;
  q.f = f;
  q.x = x;
  q.y = y;
  return q;
}
int my_check(string s) {
  if (s == "") return 0;
  int sum = 0;
  for (int i = 0; i < vs.size(); i++) {
    int k = vs[i].find(s);
    if (k != -1) sum++;
  }
  return sum;
}
void magic(block &a, block b, int k) {
  if (a.f && b.f) return;
  if (!a.f && !b.f) {
    a = b;
    a.f = !a.f;
    return;
  }
  if (k % 2) {
    if ((b.x > a.x) || ((b.x == a.x) && (b.y < a.y))) {
      a.x = b.x;
      a.y = b.y;
    }
  } else {
    if ((b.y > a.y) || ((b.y == a.y) && (b.x < a.x))) {
      a.x = b.x;
      a.y = b.y;
    }
  }
}
int my_cnt(string s) {
  int maxim = 1, sum = 0;
  for (int i = 0; i < s.size(); i++) {
    int x = s[i] - '0' - 48;
    maxim = max(maxim, x);
    sum += x;
  }
  return sum * maxim + my_check(s);
}
block solve(string s) {
  if (used.count(s)) return used[s];
  used[s] = make_block(0, 0, 0);
  set<char>::iterator it_st;
  int k = s.size() + 1;
  for (it_st = st.begin(); it_st != st.end(); it_st++) {
    block q1, q2;
    char ch = *it_st;
    if (my_check(s + ch)) {
      q1 = solve(s + ch);
      magic(used[s], q1, k);
    }
    if (my_check(ch + s)) {
      q2 = solve(ch + s);
      magic(used[s], q2, k);
    }
  }
  if (k % 2 == 0)
    used[s].x += my_cnt(s);
  else
    used[s].y += my_cnt(s);
  return used[s];
}
int main() {
  int n;
  cin >> n;
  for (int i = 0; i < n; i++) {
    string s;
    cin >> s;
    for (int j = 0; j < s.size(); j++) st.insert(s[j]);
    vs.push_back(s);
  }
  block ans = solve("");
  if (!ans.f)
    cout << "Second";
  else
    cout << "First";
  cout << endl << ans.x << " " << ans.y;
  return 0;
}
