#include <bits/stdc++.h>
using namespace std;
inline const int read() {
  int r = 0, k = 1;
  char c = getchar();
  for (; c < '0' || c > '9'; c = getchar())
    if (c == '-') k = -1;
  for (; c >= '0' && c <= '9'; c = getchar()) r = r * 10 + c - '0';
  return k * r;
}
int n, k;
struct node {
  node *c[26];
  bool isword;
  bool first_win;
  bool first_lose;
} T[100010], *root;
int cntnode;
char s[100010];
node *newnode() { return &T[++cntnode]; }
void insert(char *p) {
  node *o = root;
  for (; *p; p++) {
    int son = *p - 'a';
    if (o->c[son] == 0) o->c[son] = newnode();
    o = o->c[son];
  }
  o->isword = 1;
}
void dfs(node *o) {
  if (o == 0) return;
  if (o->isword) {
    o->first_win = 0;
    o->first_lose = 1;
  }
  bool flag = 0;
  for (int i = (0), _ = (25); i <= _; i++)
    if (o->c[i]) dfs(o->c[i]);
  for (int i = (0), _ = (25); i <= _; i++)
    if (o->c[i]) {
      if (!o->c[i]->first_win) o->first_win = 1;
      if (!o->c[i]->first_lose) o->first_lose = 1;
      flag = 1;
    }
  if (!flag) o->first_lose = 1;
}
void input() {
  n = read();
  k = read();
  root = newnode();
  for (int i = (1), _ = (n); i <= _; i++) {
    scanf("%s", s);
    insert(s);
  }
}
void solve() {
  dfs(root);
  node *o = root;
  if (o->first_win && o->first_lose)
    puts("First");
  else if (o->first_win && !o->first_lose && (k & 1))
    puts("First");
  else
    puts("Second");
}
int main() {
  input(), solve();
  return 0;
}
