#include <bits/stdc++.h>
using namespace std;
struct Node {
  Node *arr[26];
  int state;
  bool isEnd = false;
  Node() {
    for (int i = 0; i < 26; i++) arr[i] = nullptr;
    isEnd = true;
  }
};
void insert(const string &s, Node *root) {
  Node *curr = root;
  for (char c : s) {
    if (curr->arr[c - 'a'] == nullptr) curr->arr[c - 'a'] = new Node();
    curr = curr->arr[c - 'a'];
  }
  curr->isEnd = true;
}
int find_state(Node *curr, bool leaf = true) {
  bool winning = false;
  int cnt = 0;
  for (int i = 0; i < 26; i++) {
    if (curr->arr[i] != nullptr) {
      cnt++;
      if (find_state(curr->arr[i], leaf) == 0) winning = true;
    }
  }
  if (cnt == 0) winning = leaf;
  return curr->state = winning ? 1 : 0;
}
int main() {
  int n, k;
  cin >> n >> k;
  Node *root = new Node();
  for (int i = 0; i < n; i++) {
    string s;
    cin >> s;
    insert(s, root);
  }
  int st1 = find_state(root, false);
  if (k == 1) {
    cout << (st1 == 1 ? "First" : "Second") << endl;
  } else {
    int st2 = find_state(root, true);
    if (st2 == 1 && st1 == 1) {
      cout << "First" << endl;
    } else if (st2 == 1 && st1 == 0) {
      cout << "Second" << endl;
    } else if (st2 == 0 && st1 == 1) {
      cout << (k % 2 == 0 ? "Second" : "First") << endl;
    } else {
      cout << "Second" << endl << "\n";
    }
  }
  return 0;
}
