#include <bits/stdc++.h>
using namespace std;
const int INF = 1000000000;
struct TrieNode {
  TrieNode *child[26];
};
int main() {
  vector<TrieNode> pool(100000);
  auto getNode = [&pool]() {
    TrieNode *ret = &pool.back();
    pool.pop_back();
    return ret;
  };
  TrieNode *root = getNode();
  int n, k;
  scanf("%d%d", &n, &k);
  while (n--) {
    char str[100001];
    scanf("%s", str);
    TrieNode *p = root;
    for (int i = 0; str[i]; i++) {
      if (!p->child[str[i] - 'a']) p->child[str[i] - 'a'] = getNode();
      p = p->child[str[i] - 'a'];
    }
  }
  function<pair<bool, bool>(TrieNode *)> game;
  game = [&game](TrieNode *p) {
    bool v1 = false, v2 = false, leaf = true;
    for (int i = 0; i < (26); i++) {
      if (p->child[i]) {
        leaf = false;
        auto g = game(p->child[i]);
        v1 = v1 || !g.first;
        v2 = v2 || !g.second;
      }
    }
    if (leaf) {
      return make_pair(false, true);
    } else {
      return make_pair(v1, v2);
    }
  };
  auto v = game(root);
  cerr << v.first << ' ' << v.second << endl;
  [v, k]() {
    if (v.first) {
      if (k == 1) return true;
      if (v.second) {
        return true;
      } else {
        return k % 2 == 1;
      }
    } else {
      return false;
    }
  }()
      ? puts("First")
      : puts("Second");
  return 0;
}
