#include <bits/stdc++.h>
using namespace std;
struct trie {
  struct trie* child[26];
  int isWin;
  int isLose;
};
int k;
bool insert(struct trie* root, string s, int index) {
  if (index == s.size()) return true;
  if (root->child[s[index] - 'a'] != NULL) {
    return insert(root->child[s[index] - 'a'], s, index + 1);
  } else {
    root->child[s[index] - 'a'] = new trie();
    (root->child[s[index] - 'a'])->isWin = 0;
    return insert(root->child[s[index] - 'a'], s, index + 1);
  }
}
void dfs(trie* root, int level) {
  int flag2 = 0;
  root->isWin = 0;
  root->isLose = 0;
  for (int i = 0; i < 26; i++) {
    if (root->child[i] != NULL) {
      flag2 = 1;
      dfs(root->child[i], level + 1);
      root->isWin |= !root->child[i]->isWin;
      root->isLose |= !root->child[i]->isLose;
    }
  }
  if (flag2 == 0) {
    root->isLose = 1;
  }
}
void answer(int res) {
  cout << (res ? "First" : "Second");
  exit(0);
}
int main() {
  int n, i;
  string s;
  struct trie* root = new trie();
  root->isWin = 0;
  cin >> n >> k;
  for (i = 0; i < n; i++) {
    cin >> s;
    insert(root, s, 0);
  }
  dfs(root, 0);
  int flag1 = 0, flag2 = 0, l = 0, w = 0;
  if (k == 1)
    answer(root->isWin);
  else if (!root->isWin)
    answer(root->isWin);
  else if (root->isLose)
    answer(root->isLose);
  else if (k % 2 == 1)
    answer(root->isWin);
  else
    answer(!root->isWin);
}
