#include <bits/stdc++.h>
using namespace std;
struct trie {
  map<char, trie*> m;
  bool end;
  int dpw;
  int dpl;
  trie() {
    end = false;
    dpw = -1;
    dpl = -1;
  }
};
void ins(trie* node, string& s, int in) {
  if (in == s.length()) {
    node->end = true;
    return;
  }
  if (node->m.find(s[in]) != node->m.end()) {
    ins(node->m[s[in]], s, in + 1);
  } else {
    node->m[s[in]] = new trie;
    ins(node->m[s[in]], s, in + 1);
  }
}
void calc(trie* node) {
  node->dpw = 0;
  node->dpl = 0;
  map<char, trie*>::iterator it = node->m.begin();
  if (node->m.size() == 0) {
    node->dpw = 0;
    node->dpl = 1;
    return;
  }
  while (it != node->m.end()) {
    calc(it->second);
    if (it->second->dpw == 0) node->dpw = 1;
    if (it->second->dpl == 0) node->dpl = 1;
    ++it;
  }
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n, k;
  cin >> n >> k;
  vector<string> arr(n);
  trie* head = new trie;
  for (int i = 0; i < n; i++) {
    cin >> arr[i];
    ins(head, arr[i], 0);
  }
  calc(head);
  if (head->dpw == 1) {
    if (head->dpl == 1) {
      cout << "First";
    } else {
      if (k & 1)
        cout << "First";
      else {
        cout << "Second";
      }
    }
  } else {
    cout << "Second";
  }
  return 0;
}
