#include <bits/stdc++.h>
using namespace std;
struct Trie {
  Trie* next[26];
  Trie() { memset(next, 0, sizeof(next)); }
};
void insertTrie(Trie* root, string& s) {
  Trie* p = root;
  for (int i = 0; i < s.size(); i++) {
    if (p->next[s[i] - 'a'] == NULL) {
      p->next[s[i] - 'a'] = new Trie();
    }
    p = p->next[s[i] - 'a'];
  }
}
int dfs(int leaf, Trie* root) {
  int val[30] = {0};
  int isLeaf = 1;
  for (int i = 0; i < 26; i++) {
    if (root->next[i]) {
      val[dfs(leaf, root->next[i])] = 1;
      isLeaf = 0;
    }
  }
  if (isLeaf == 1) return leaf;
  int ret = 0;
  while (val[ret]) ret++;
  return ret;
}
void solve(int ncase) {
  int n, k;
  cin >> n >> k;
  Trie* root = new Trie();
  for (int i = 0; i < n; i++) {
    string s;
    cin >> s;
    insertTrie(root, s);
  }
  int ret1 = dfs(0, root) > 0 ? 1 : 0;
  int ret2 = dfs(1, root) > 0 ? 1 : 0;
  if (ret1 == ret2 && ret1 == 1) {
    cout << "First" << endl;
    return;
  }
  if (ret1 != ret2 && ret1 == 1) {
    cout << (k % 2 ? "First" : "Second") << endl;
    return;
  }
  if (ret1 != ret2 && ret1 == 0) {
    cout << "Second" << endl;
    return;
  }
  if (ret1 == ret2 && ret1 == 0) {
    cout << "Second" << endl;
    return;
  }
}
int main() {
  ios::sync_with_stdio(false);
  int T = 1;
  int ncase = 0;
  while (T--) {
    solve(++ncase);
  }
}
