#include <bits/stdc++.h>
long head[27001] = {0}, e[1000001] = {0}, next[1000001] = {0}, num[27001] = {0},
     p[2][27001] = {0};
char rec[27001][35] = {0}, str[31][35] = {0}, tmp[35] = {0}, flag[27001] = {0},
     visit[27001] = {0};
long tot = 1, totm = 0;
void add(long a, long b) {
  e[++totm] = b;
  next[totm] = head[a];
  head[a] = totm;
}
void qs(long x, long y) {
  long i = x, j = y;
  char t[35];
  strcpy(t, rec[(x + y) >> 1] + 1);
  if (x >= y) return;
  strcpy(rec[(x + y) >> 1] + 1, rec[x] + 1);
  while (i < j) {
    while (i < j && strcmp(rec[j] + 1, t) > 0) j--;
    if (i < j) strcpy(rec[i++] + 1, rec[j] + 1);
    while (i < j && strcmp(rec[i] + 1, t) < 0) i++;
    if (i < j) strcpy(rec[j--] + 1, rec[i] + 1);
  }
  strcpy(rec[i] + 1, t);
  qs(x, i - 1);
  qs(i + 1, y);
}
void find(long x) {
  long l = 0, r = tot, m;
  while (l < r - 1) {
    m = (l + r) >> 1;
    if (strcmp(rec[m] + 1, tmp + 1) >= 0)
      r = m;
    else
      l = m;
  }
  if (!strcmp(rec[r] + 1, tmp + 1)) add(x, r);
}
void dfs(long now) {
  long i;
  visit[now] = 1;
  p[0][now] = p[1][now] = flag[now] = 0;
  for (i = head[now]; i; i = next[i]) {
    if (!visit[e[i]]) dfs(e[i]);
    if (!flag[e[i]] && !flag[now] ||
        !flag[e[i]] == flag[now] && p[1][e[i]] + num[e[i]] > p[0][now] ||
        !flag[e[i]] == flag[now] && p[1][e[i]] + num[e[i]] == p[0][now] &&
            p[0][e[i]] < p[1][now]) {
      flag[now] = !flag[e[i]];
      p[0][now] = p[1][e[i]] + num[e[i]];
      p[1][now] = p[0][e[i]];
    }
  }
}
int main() {
  long i, j, k, l, n, len, s, m;
  scanf("%ld\n", &n);
  for (i = 1; i <= n; i++) {
    gets(str[i] + 1);
    len = strlen(str[i] + 1);
    for (j = 1; j <= len; j++)
      for (k = j; k <= len; k++) {
        tot++;
        for (l = 1; l <= k - j + 1; l++) rec[tot][l] = str[i][j + l - 1];
      }
  }
  qs(1, tot);
  for (i = 1; i <= tot; i++) {
    s = m = 0;
    for (j = 1; rec[i][j]; j++) {
      s += rec[i][j] - 'a' + 1;
      m = ((m) > (rec[i][j] - 'a' + 1) ? (m) : (rec[i][j] - 'a' + 1));
    }
    num[i] = s * m;
    for (j = 1; j <= n; j++)
      if (strstr(str[j] + 1, rec[i] + 1) != NULL) num[i]++;
    len = strlen(rec[i] + 1);
    strcpy(tmp + 2, rec[i] + 1);
    for (j = 1; j <= 26; j++) {
      tmp[1] = 'a' + j - 1;
      find(i);
    }
    strcpy(tmp + 1, rec[i] + 1);
    for (j = 1; j <= 26; j++) {
      tmp[len + 1] = 'a' + j - 1;
      find(i);
    }
  }
  dfs(1);
  printf("%s\n%ld %ld\n", flag[1] ? "First" : "Second", p[0][1], p[1][1]);
  return 0;
}
