#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 7;
struct TNode {
  bool is_leaf, win, lose;
  TNode *nxt[26];
};
typedef TNode *PNode;
int n, k;
PNode root;
void create(PNode &p) {
  p = new TNode;
  p->is_leaf = 1, p->win = p->lose = 0;
  for (int i = 0; i < 26; ++i) p->nxt[i] = nullptr;
}
void buildTree() {
  for (int i = 1; i <= n; ++i) {
    char c = getchar();
    while (c > 'z' || c < 'a') c = getchar();
    PNode p = root;
    while (c <= 'z' && c >= 'a') {
      int nc = (c - 'a');
      if (p->nxt[nc] == nullptr) create(p->nxt[nc]);
      p->is_leaf = 0, p = p->nxt[nc], c = getchar();
    }
  }
}
void dfs(PNode p) {
  if (p->is_leaf) return p->lose = 1, void();
  p->win = p->lose = 0;
  for (int i = 0; i < 26; ++i)
    if (p->nxt[i] != nullptr) {
      dfs(p->nxt[i]);
      if (!p->nxt[i]->win) p->win = 1;
      if (!p->nxt[i]->lose) p->lose = 1;
    }
}
void solve() {
  buildTree();
  dfs(root);
  if (!root->win) puts("Second");
  if (root->win && root->lose) puts("First");
  if (root->win && !root->lose) puts((k % 2) ? "First" : "Second");
}
void enter() {
  scanf("%d%d", &n, &k);
  create(root);
}
int main() {
  enter();
  solve();
}
