#include <bits/stdc++.h>
using namespace std;
struct Node {
  Node *ch[26];
  Node() {
    for (int i = 0; i < 26; i++) ch[i] = NULL;
  }
} * Root;
struct Trie {
  void init() { Root = new Node(); }
  void ins(Node *t, string s) {
    for (int i = 0; i < s.size(); i++) {
      int id = s[i] - 'a';
      if (t->ch[id] == NULL) {
        Node *p = new Node();
        t->ch[id] = p;
      }
      t = t->ch[id];
    }
  }
  void del(Node *t) {
    for (int i = 0; i < 26; i++)
      if (t->ch[i] != NULL) del(t->ch[i]);
    free(t);
  }
  bool win(Node *t) {
    for (int i = 0; i < 26; i++)
      if (t->ch[i] != NULL)
        if (!win(t->ch[i])) return true;
    return false;
  }
  bool lose(Node *t) {
    bool flag = 0;
    for (int i = 0; i < 26; i++)
      if (t->ch[i] != NULL) {
        flag = true;
        if (!lose(t->ch[i])) return true;
      }
    return false || !flag;
  }
};
const int Maxn = 1e5 + 8;
char s[Maxn];
int main() {
  Trie T;
  T.init();
  int n, k;
  scanf("%d %d", &n, &k);
  for (int i = 0; i < n; i++) {
    scanf("%s", s);
    T.ins(Root, s);
  }
  bool win = T.win(Root), lose = T.lose(Root);
  if (win && lose)
    puts("First");
  else {
    if (win) {
      if (k & 1)
        puts("First");
      else
        puts("Second");
    } else
      puts("Second");
  }
  return 0;
}
