#include <bits/stdc++.h>
using namespace std;
vector<vector<int> > trie(1, vector<int>(26, -1));
int ost = 0;
void Dodaj(string x) {
  int akt = 0;
  for (int i = 0; i < x.size(); ++i) {
    if (trie[akt][x[i] - 'a'] == -1) {
      ++ost;
      trie[akt][x[i] - 'a'] = ost;
      vector<int> t(26, -1);
      trie.push_back(t);
      akt = ost;
    } else
      akt = trie[akt][x[i] - 'a'];
  }
}
void dfs(int akt, vector<bool>& win, vector<bool>& lose) {
  bool lisc = true;
  for (int i = 0; i < 26; ++i) {
    if (trie[akt][i] != -1) {
      dfs(trie[akt][i], win, lose);
      lisc = false;
    }
  }
  if (lisc)
    win[akt] = false;
  else {
    win[akt] = false;
    for (int i = 0; i < 26; ++i)
      if (trie[akt][i] != -1 && !win[trie[akt][i]]) win[akt] = true;
  }
  if (lisc)
    lose[akt] = true;
  else {
    lose[akt] = false;
    for (int i = 0; i < 26; ++i)
      if (trie[akt][i] != -1 && !lose[trie[akt][i]]) lose[akt] = true;
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  int n, k;
  cin >> n >> k;
  for (int i = 0; i < n; ++i) {
    string x;
    cin >> x;
    Dodaj(x);
  }
  vector<bool> win(ost + 1);
  vector<bool> lose(ost + 1);
  dfs(0, win, lose);
  if (k % 2 == 0 && win[0] && !lose[0]) cout << "Second";
  if (k % 2 == 1 && win[0] && !lose[0]) cout << "First";
  if (!win[0] && lose[0]) cout << "Second";
  if (win[0] && lose[0]) cout << "First";
  if (!win[0] && !lose[0]) cout << "Second";
  return 0;
}
