#include <bits/stdc++.h>
using namespace std;
struct Trie {
  int g[100005][26], tot;
  void init() {
    memset(g[0], 0, sizeof(g[0]));
    tot = 0;
  }
  void add(char *s) {
    int p = 0;
    for (; *s; ++s) {
      int i = *s - 'a';
      if (!g[p][i]) {
        g[p][i] = ++tot;
        memset(g[tot], 0, sizeof(g[tot]));
      }
      p = g[p][i];
    }
  }
  bool dfs(int p) {
    for (int i = 0; i < 26; ++i)
      if (g[p][i]) {
        if (!dfs(g[p][i])) return 1;
      }
    return 0;
  }
  bool dfs2(int p) {
    bool flag = 1;
    for (int i = 0; i < 26; ++i)
      if (g[p][i]) {
        flag = 0;
        if (!dfs2(g[p][i])) return 1;
      }
    return flag;
  }
} trie;
char s[100005];
int n, m;
int main() {
  int i, len;
  scanf("%d%d", &n, &m);
  while (n--) {
    scanf("%s", s);
    trie.add(s);
  }
  bool win = trie.dfs(0), lose = trie.dfs2(0);
  if (win && lose) {
    puts("First");
  } else if (win && !lose) {
    if (m & 1)
      puts("First");
    else
      puts("Second");
  } else if (!win && lose) {
    puts("Second");
  } else {
    puts("Second");
  }
  return 0;
}
