#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-9;
int fx[] = {-1, 1, 0, 0, -1, -1, 1, 1};
int fy[] = {0, 0, -1, 1, -1, 1, -1, 1};
int kx[] = {1, 1, 2, 2, -1, -1, -2, -2};
int ky[] = {2, -2, 1, -1, 2, -2, 1, -1};
bool win[100005], lose[100005];
int cnt;
struct Trie {
  int val;
  bool leaf;
  Trie* next[26];
  Trie() {
    val = cnt;
    leaf = false;
    for (int i = 0; i < 26; i++) {
      next[i] = NULL;
    }
  }
};
void Insert(Trie* root, string s) {
  Trie* cur = root;
  int sz = s.size();
  for (int i = 0; i < sz; i++) {
    int ch = (int)(s[i] - 'a');
    if (cur->next[ch] == NULL) {
      ++cnt;
      cur->next[ch] = new Trie;
    }
    cur = cur->next[ch];
  }
  cur->leaf = true;
}
void dfs(Trie* root) {
  int n = root->val;
  if (root->leaf) {
    win[n] = false;
    lose[n] = true;
  }
  for (int i = 0; i < 26; i++) {
    if (root->next[i] != NULL) {
      dfs(root->next[i]);
      int v = root->next[i]->val;
      win[n] |= !win[v];
      lose[n] |= !lose[v];
    }
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  int n, k;
  cin >> n >> k;
  ++cnt;
  Trie* root = new Trie();
  for (int it = 0; it < n; it++) {
    string s;
    cin >> s;
    Insert(root, s);
  }
  dfs(root);
  if (!win[1])
    cout << "Second\n";
  else if (lose[1])
    cout << "First\n";
  else {
    if (k & 1)
      cout << "First\n";
    else
      cout << "Second\n";
  }
}
