#include <bits/stdc++.h>
using namespace std;
struct vert {
  char c;
  map<char, int> next;
};
const int N = 1000000;
vert bor[N];
int glob = 0;
void add_bor(string &s) {
  int cur = 0;
  for (int i = 0; i < s.size(); i++)
    if (bor[cur].next.count(s[i]))
      cur = bor[cur].next[s[i]];
    else {
      bor[cur].next[s[i]] = ++glob;
      cur = glob;
    }
}
vector<int> win(N), win_not(N);
void dfs(int x) {
  win_not[x] = bor[x].next.empty();
  win[x] = 0;
  for (map<char, int>::iterator it = bor[x].next.begin();
       it != bor[x].next.end(); it++) {
    int v = it->second;
    dfs(v);
    win[x] |= !win[v];
    win_not[x] |= !win_not[v];
  }
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie();
  long long n, k;
  cin >> n >> k;
  string s;
  for (long long i = 0; i < n; i++) {
    cin >> s;
    add_bor(s);
  }
  dfs(0);
  long long w1 = win[0], w2 = win_not[0];
  if (w1 && w2)
    cout << "First" << endl;
  else if (w1) {
    if (k % 2)
      cout << "First" << endl;
    else
      cout << "Second" << endl;
  } else
    cout << "Second" << endl;
  return 0;
}
