#include <bits/stdc++.h>
using namespace std;
long long n;
long long tot = 1;
char ch[100010];
long long read() {
  long long sum = 0, fh = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') fh = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    sum = (sum << 3) + (sum << 1) + (ch ^ 48);
    ch = getchar();
  }
  return sum * fh;
}
struct Trie {
  long long nxt[30];
  long long v;
  bool LeaF = 0;
} t[100010];
void ins() {
  bool flag = 1;
  long long len = strlen(ch);
  long long p = 1;
  for (long long i = 0; i < len; ++i) {
    if (t[p].LeaF) t[p].LeaF = 0;
    if (!t[p].nxt[ch[i] - 'a']) t[p].nxt[ch[i] - 'a'] = ++tot;
    p = t[p].nxt[ch[i] - 'a'];
  }
  for (long long i = 0; i < 25; ++i) {
    if (t[p].nxt[i]) flag = 0;
  }
  t[p].LeaF = flag;
}
void DFS(long long p) {
  if (t[p].LeaF) {
    t[p].v = 2;
    return;
  }
  t[p].v = 0;
  long long _1 = 0, _2 = 0;
  bool flag = 0;
  for (long long i = 0; i < 25; ++i) {
    if (!t[p].nxt[i]) continue;
    long long k = t[p].nxt[i];
    DFS(k);
    if (t[k].v == 2) _1 = 1;
    if (t[k].v == 1) _2 = 2;
    if (t[k].v == 0) flag = 1;
  }
  t[p].v += (_1 + _2);
  if (flag == 1) t[p].v = 3;
}
signed main() {
  n = read();
  long long k = read();
  for (long long i = 1; i <= n; ++i) {
    scanf("%s", ch);
    ins();
  }
  DFS(1);
  if (t[1].v == 3) {
    puts("First");
  }
  if (t[1].v == 0 || t[1].v == 2) {
    puts("Second");
  };
  if (t[1].v == 1) {
    (k & 1) ? puts("First") : puts("Second");
  }
  return 0;
}
