#include <bits/stdc++.h>
using namespace std;
struct Node {
 public:
  struct Node *children[26];
  bool isEnd{};
  Node() {
    isEnd = true;
    for (long long i = 0; i < 26; ++i) {
      children[i] = nullptr;
    }
  }
};
Node *root = new Node;
map<Node *, bool> win, lose;
void insert(string s) {
  long long n = s.size();
  Node *node = root;
  for (char i : s) {
    node->isEnd = false;
    if (!node->children[i - 'a']) {
      node->children[i - 'a'] = new Node;
    }
    node = node->children[i - 'a'];
  }
}
void dp(Node *node) {
  if (node->isEnd) {
    win[node] = false;
    lose[node] = true;
    return;
  }
  win[node] = false;
  lose[node] = false;
  for (long long i = 0; i < 26; ++i) {
    if (node->children[i]) {
      dp(node->children[i]);
      win[node] |= !win[node->children[i]];
      lose[node] |= !lose[node->children[i]];
    }
  }
}
int32_t main() {
  long long T{1};
  while (T--) {
    long long n, k;
    cin >> n >> k;
    vector<string> a(n);
    for (long long i = 0; i < n; ++i) {
      cin >> a[i];
      insert(a[i]);
    }
    dp(root);
    if (!win[root]) {
      cout << "Second";
    } else if (lose[root]) {
      cout << "First";
    } else {
      cout << ((k % 2 == 1) ? "First" : "Second");
    }
  }
}
