#include <bits/stdc++.h>
using namespace std;
vector<int> G[100005];
char ch[100005];
bool win[100005], lose[100005];
void add(int now, int l, int j) {
  if (l == j) return;
  for (int i = 0; i < G[now].size(); i++) {
    if (ch[G[now][i]] == ch[l]) {
      add(G[now][i], l + 1, j);
      return;
    }
  }
  G[now].push_back(l);
  add(l, l + 1, j);
}
void dfs(int u) {
  int m = G[u].size();
  if (m == 0) {
    lose[u] = 1;
    return;
  }
  for (int i = 0; i < m; i++) {
    int t = G[u][i];
    dfs(t);
    if (!win[t]) win[u] = 1;
    if (!lose[t]) lose[u] = 1;
  }
}
int main() {
  int n, k, l = 1;
  cin >> n >> k;
  getchar();
  for (int i = 0; i < n; i++) {
    int j = 0;
    while (scanf("%c", &ch[l + j]) == 1 && ch[l + j] != '\n') j++;
    add(0, l, l + j);
    l += j;
  }
  memset(win, 0, sizeof(win));
  memset(lose, 0, sizeof(lose));
  dfs(0);
  int flag = 2;
  if (win[0] && lose[0]) flag = 1;
  if (win[0] && !lose[0]) {
    if (k % 2 == 1)
      flag = 1;
    else
      flag = 2;
  }
  if (flag == 1)
    cout << "First" << endl;
  else
    cout << "Second" << endl;
  return 0;
}
