#include <bits/stdc++.h>
using namespace std;
map<int, int> mp, cnt, pre, lose;
string s[100000];
int n, k;
const long long mod = 1000000007LL;
queue<int> q;
void f(int x) {
  long long r = 0, nxt;
  int l = s[x].length();
  for (int i = 0; i < l; i++) {
    nxt = (r * 37 + s[x][i] - 'a' + 1) % mod;
    if (mp.find(nxt) == mp.end())
      cnt[r]++, mp[nxt] = -1, lose[nxt] = -1, cnt[nxt] = 0, pre[nxt] = r;
    r = nxt;
  }
}
int main() {
  cin >> n >> k;
  mp[0] = -1;
  cnt[0] = 0;
  lose[0] = -1;
  for (int i = 0; i < n; i++) cin >> s[i];
  for (int i = 0; i < n; i++) f(i);
  for (map<int, int>::iterator i = cnt.begin(); i != cnt.end(); i++)
    if (i->second == 0) q.push(i->first), mp[i->first] = 1, lose[i->first] = 0;
  while (!q.empty()) {
    int x = q.front();
    q.pop();
    if (x == 0) break;
    int prev = pre[x];
    if (mp[x]) mp[prev] = 0;
    if (lose[x]) lose[prev] = 0;
    if ((--cnt[prev]) == 0) {
      q.push(prev);
      if (lose[prev] == -1) lose[prev] = 1;
      if (mp[prev] == -1) mp[prev] = 1;
    }
  }
  int win;
  lose[0] ^= 1;
  mp[0] ^= 1;
  if (lose[0] && mp[0]) win = 1;
  if (!lose[0] && mp[0]) win = k & 1;
  if (!mp[0]) win = 0;
  if (win)
    cout << "First" << endl;
  else
    cout << "Second" << endl;
  return 0;
}
