#include <bits/stdc++.h>
using namespace std;
struct Node {
  bool isEnd;
  Node* nxt[26]{};
  Node() : isEnd(false) {}
};
struct Trie {
  Node* root;
  Trie() { root = new Node(); }
  void insert(const char* str) {
    Node* cur = root;
    for (int i = 0; str[i]; ++i) {
      if (!(cur->nxt[str[i] - 'a'])) {
        cur->nxt[str[i] - 'a'] = new Node();
      }
      cur = cur->nxt[str[i] - 'a'];
    }
    cur->isEnd = true;
  }
  pair<bool, bool> isWinning(Node* u) {
    pair<bool, bool> ret = {false, false};
    bool isLeaf = true;
    for (int i = 0; i < 26; ++i) {
      if (u->nxt[i]) {
        isLeaf = false;
        pair<bool, bool> vRet = isWinning(u->nxt[i]);
        ret = {ret.first | !vRet.first, ret.second | !vRet.second};
      }
    }
    if (isLeaf) ret.second = true;
    return ret;
  }
} trie;
int n, k;
char str[100001];
int main() {
  scanf("%d %d", &n, &k);
  for (int i = 0; i < n; ++i) {
    scanf("%s", str);
    trie.insert(str);
  }
  pair<bool, bool> firstPlayer = trie.isWinning(trie.root);
  if (firstPlayer.first && !firstPlayer.second && !(k & 1))
    firstPlayer.first ^= 1;
  puts(firstPlayer.first ? "First" : "Second");
  return 0;
}
