#include <bits/stdc++.h>
using namespace std;
vector<int> edge[200001];
int cnt = 0;
char val[100001];
char s[100011];
void place(char *s, int i, int now) {
  if (s[i] == '\0') return;
  bool find = 0;
  for (vector<int>::iterator j = edge[now].begin(); j != edge[now].end(); j++)
    if (val[*j] == s[i]) {
      find = 1;
      place(s, i + 1, *j);
      break;
    }
  if (!find) {
    edge[now].push_back(++cnt);
    val[cnt] = s[i];
    place(s, i + 1, cnt);
  }
}
bool dfs1(int i) {
  for (vector<int>::iterator j = edge[i].begin(); j != edge[i].end(); j++)
    if (dfs1(*j)) return 0;
  return 1;
}
bool dfs2(int i) {
  if (edge[i].size() == 0) return 0;
  for (vector<int>::iterator j = edge[i].begin(); j != edge[i].end(); j++)
    if (dfs2(*j)) return 0;
  return 1;
}
int main() {
  int n, k;
  scanf("%d%d", &n, &k);
  for (int i = 0; i < n; i++) {
    scanf("%s", s);
    place(s, 0, 0);
  }
  int sign[2];
  sign[0] = 0;
  for (vector<int>::iterator i = edge[0].begin(); i != edge[0].end(); i++)
    if (dfs1(*i)) {
      sign[0] = 1;
      break;
    }
  sign[1] = 0;
  for (vector<int>::iterator i = edge[0].begin(); i != edge[0].end(); i++)
    if (dfs2(*i)) {
      sign[1] = 1;
      break;
    }
  if (sign[0] == 1 && sign[1] == 1)
    puts("First");
  else if (sign[0] == 0 && sign[1] == 0)
    puts("Second");
  else if (sign[0] == 1 && sign[1] == 0) {
    if (k % 2 == 1)
      puts("First");
    else
      puts("Second");
  } else
    puts("Second");
  return 0;
}
