#include <bits/stdc++.h>
using namespace std;
int n, k;
char str[100005];
typedef struct TrieNode {
  int cnt;
  bool isend;
  struct TrieNode* nxt[26];
} * Trie, TrieNode;
Trie createTrieNode() {
  Trie node = (Trie)malloc(sizeof(TrieNode));
  node->cnt = 0;
  node->isend = false;
  for (int i = 0; i < 26; i++) node->nxt[i] = NULL;
  return node;
}
void Trie_insert(Trie root, char* word) {
  Trie node = root;
  char* p = word;
  int st;
  while (*p) {
    st = *p - 'a';
    if (node->nxt[st] == NULL) {
      node->nxt[st] = createTrieNode();
    }
    node = node->nxt[st];
    node->cnt++;
    p++;
  }
  node->isend = true;
}
int dfs1(Trie node) {
  for (int i = 0; i < 26; i++) {
    if (node->nxt[i] == NULL) continue;
    if (!dfs1(node->nxt[i])) return 1;
  }
  return 0;
}
int dfs2(Trie node) {
  int flag = 0;
  for (int i = 0; i < 26; i++) {
    if (node->nxt[i] == NULL) continue;
    flag = 1;
    if (!dfs2(node->nxt[i])) return 1;
  }
  if (flag == 0) return 1;
  return 0;
}
int main() {
  Trie root = createTrieNode();
  scanf("%d%d", &n, &k);
  for (int i = 0; i < n; i++) {
    scanf("%s", str);
    Trie_insert(root, str);
  }
  int flag, flag1, flag2;
  flag1 = dfs1(root);
  if (flag1 == 0)
    flag2 = 1;
  else
    flag2 = dfs2(root);
  if (!flag1)
    cout << "Second" << endl;
  else if (flag1 && flag2) {
    cout << "First" << endl;
  } else {
    if (k & 1)
      cout << "First" << endl;
    else
      cout << "Second" << endl;
  }
  return 0;
}
