#include <bits/stdc++.h>
using namespace std;
struct node {
  int nxt[26];
};
node e[110000];
char str[110000];
int tag[110000];
int n, k, cnt;
void trie_init() {
  memset(e[0].nxt, -1, sizeof(e[0].nxt));
  cnt = 0;
}
void trie_insert(char *s, int id, int off, int len) {
  if (off == len) return;
  int next = s[off] - 'a';
  if (!~e[id].nxt[next]) {
    ++cnt;
    memset(e[cnt].nxt, -1, sizeof(e[cnt].nxt));
    e[id].nxt[next] = cnt;
  }
  trie_insert(s, e[id].nxt[next], off + 1, len);
}
int dfs(int x) {
  int i, j;
  tag[x] = 0;
  for (i = j = 0; i < 26; ++i)
    if (~e[x].nxt[i]) {
      tag[x] |= dfs(e[x].nxt[i]);
      j = 1;
    }
  if (!j) tag[x] = 1;
  return 3 - tag[x];
}
void conduct() {
  int i;
  scanf("%d", &k);
  trie_init();
  for (i = 0; i < n; ++i) {
    scanf("%s", str);
    trie_insert(str, 0, 0, strlen(str));
  }
  dfs(0);
  if (tag[0] < 2) {
    printf("Second\n");
  } else if (tag[0] == 2)
    if (k & 1) {
      printf("First\n");
    } else {
      printf("Second\n");
    }
  else
    printf("First\n");
}
int main() {
  while (scanf("%d", &n) != EOF) conduct();
  return 0;
}
