#include <bits/stdc++.h>
using namespace std;
struct trie {
  trie *nxt[30];
  bool leaf;
  trie() {
    leaf = 0;
    memset(nxt, 0, sizeof nxt);
  }
} * root;
void insert(trie *t, string s) {
  for (int i = 0; i < s.size(); i++) {
    int c = s[i] - 'a';
    if (!t->nxt[c]) {
      t->nxt[c] = new trie();
    }
    t = t->nxt[c];
  }
  t->leaf = 1;
}
int n, k;
bool towin(trie *t) {
  bool res = 0;
  for (int i = 0; i < 26; i++) {
    if (t->nxt[i] == NULL) continue;
    if (towin(t->nxt[i]) == false) return true;
  }
  return false;
}
bool tolose(trie *t) {
  bool res = 0;
  for (int i = 0; i < 26; i++) {
    if (t->nxt[i] == NULL) continue;
    res = true;
    if (tolose(t->nxt[i]) == false) return true;
  }
  return !res;
}
int main() {
  ios_base::sync_with_stdio(0);
  root = new trie();
  cin >> n >> k;
  for (int i = 0; i < n; i++) {
    string s;
    cin >> s;
    insert(root, s);
  }
  bool win = towin(root);
  bool lose = tolose(root);
  if (win == true && lose == true) {
    cout << "First"
         << "\n";
  } else if (win == true && k % 2 == 1) {
    cout << "First"
         << "\n";
  } else {
    cout << "Second"
         << "\n";
  }
  return 0;
}
