#include <bits/stdc++.h>
using namespace std;
const int INF = 1000111222;
struct Vertex;
Vertex *vv;
int kurde;
struct Vertex {
  set<int> adj;
  int ile, pts, win, moje, jego, len;
  bool plus, vis;
  void comppts(const string &s) {
    pts = 0;
    int mx = 0;
    for (typeof(s.begin()) it = s.begin(); it != s.end(); ++it) {
      int w = (*it) - 'a' + 1;
      pts += w;
      mx = max(mx, w);
    }
    pts = (pts * mx) + ile;
  }
  void dfs() {
    vis = true;
    ++kurde;
    if (adj.size() == 0) {
      win = 0;
      moje = 0;
      jego = 0;
      return;
    }
    win = 0, moje = -1, jego = INF;
    for (typeof(adj.begin()) it = adj.begin(); it != adj.end(); ++it) {
      Vertex *jt = vv + (*it);
      if (!jt->vis) jt->dfs();
      if (win == 0) {
        int nmoje = jt->jego + jt->pts;
        int njego = jt->moje;
        if (jt->win == 0) {
          win = 1;
          moje = nmoje;
          jego = njego;
        } else {
          if (nmoje > moje || (nmoje == moje && njego < jego)) {
            moje = nmoje;
            jego = njego;
          }
        }
      } else if (jt->win == 0) {
        int nmoje = jt->jego + jt->pts;
        int njego = jt->moje;
        if (nmoje > moje || (nmoje == moje && njego < jego)) {
          moje = nmoje;
          jego = njego;
        }
      }
    }
  }
};
Vertex m[33 * 33 * 33];
map<string, int> id[33];
int id_cnt, tab[33][33][33], lens[33];
char c[33][33];
string sall[33 * 33 * 33];
int main() {
  vv = m;
  int n;
  scanf("%d", &n);
  id_cnt = 0;
  for (int q = 0; q < n; ++q) {
    scanf("%s", c[q]);
    int len = strlen(c[q]);
    lens[q] = len;
    string s(c[q]);
    for (int k = 1; k <= len; ++k) {
      for (int i = 0; i + k <= len; ++i) {
        string y = s.substr(i, k);
        int ylen = y.size();
        map<string, int>::iterator it = id[ylen].find(y);
        if (it == id[ylen].end()) {
          id[ylen][y] = id_cnt;
          tab[q][k][i] = id_cnt;
          Vertex v;
          v.adj = set<int>();
          v.ile = 0;
          v.plus = false;
          v.len = k;
          m[id_cnt] = v;
          sall[id_cnt] = y;
          ++id_cnt;
        } else {
          tab[q][k][i] = it->second;
        }
      }
    }
  }
  for (int q = 0; q < n; ++q) {
    int len = lens[q];
    vector<int> xses;
    for (int k = 1; k <= len; ++k) {
      for (int i = 0; i + k <= len; ++i) {
        int xx = tab[q][k][i];
        m[xx].plus = true;
        xses.push_back(xx);
        if (i + k < len) {
          m[xx].adj.insert(tab[q][k + 1][i]);
        }
        if (i > 0) {
          m[xx].adj.insert(tab[q][k + 1][i - 1]);
        }
      }
    }
    for (typeof(xses.begin()) it = xses.begin(); it != xses.end(); ++it) {
      if (m[*it].plus) {
        m[*it].plus = false;
        m[*it].ile++;
      }
    }
  }
  for (int i = 0; i < id_cnt; ++i) {
    m[i].comppts(sall[i]);
  }
  m[id_cnt] = Vertex();
  for (int i = 0; i < id_cnt; ++i) {
    if (m[i].len == 1) {
      m[id_cnt].adj.insert(i);
    }
  }
  for (int i = 0; i <= id_cnt; ++i) m[i].vis = false;
  kurde = 0;
  m[id_cnt].dfs();
  Vertex v = m[id_cnt];
  if (v.win)
    puts("First");
  else
    puts("Second");
  printf("%d %d\n", m[id_cnt].moje, m[id_cnt].jego);
}
