#include <bits/stdc++.h>
using namespace std;
typedef struct trie_t {
  bool f;
  int next[26];
  trie_t() { memset(next, 0, sizeof(next)); }
} trie_t;
const int maxn = 1e5 + 5;
trie_t T[maxn];
int L = 0;
char s[maxn];
int n, m;
int newTrie() { return ++L; }
void create(char *s, int rt) {
  int p = rt;
  int i = 0, id;
  while (s[i]) {
    id = s[i] - 'a';
    if (T[p].next[id] == 0) T[p].next[id] = ++L;
    T[p].f = false;
    p = T[p].next[id];
    ++i;
  }
  T[p].f = true;
}
bool dfs1(int rt) {
  bool ret = false;
  for (int i = 0; i < 26; ++i)
    if (T[rt].next[i]) ret |= dfs1(T[rt].next[i]);
  return !ret;
}
bool dfs2(int rt) {
  bool ret = true;
  bool flag = true;
  for (int i = 0; i < 26; ++i)
    if (T[rt].next[i]) {
      ret &= dfs2(T[rt].next[i]);
      flag = false;
    }
  if (flag && T[rt].f == false) {
    printf("%d\n", rt);
  }
  if (flag)
    return true;
  else
    return !ret;
}
int main() {
  int i, j, k;
  scanf("%d %d", &n, &m);
  for (i = 0; i < n; ++i) {
    scanf("%s", s);
    create(s, 0);
  }
  bool f1 = dfs1(0);
  bool f2 = dfs2(0);
  if (f1) {
    puts("Second");
    return 0;
  }
  if (f2) {
    puts("First");
  } else {
    if (m & 1)
      puts("First");
    else
      puts("Second");
  }
  return 0;
}
