#include <bits/stdc++.h>
#pragma warning(disable : 4996)
using namespace std;
int n, k, tot;
char str[100020];
struct Node {
  int Next[26];
  int Win;
  int Lose;
  Node() { memset(Next, -1, sizeof(Next)); }
} p[100020 << 2];
void Insert(char *s) {
  int u = 0;
  int m = strlen(s);
  for (int i = 0; i < m; i++) {
    int x = s[i] - 'a';
    if (p[u].Next[x] == -1) p[u].Next[x] = tot++;
    u = p[u].Next[x];
  }
}
void DFS(int u, int game) {
  int Win, Lose;
  if (game & 1) {
    Win = 0;
    Lose = 0;
  } else {
    Win = 1;
    Lose = 1;
  }
  bool leaf = 1;
  for (int i = 0; i < 26; i++) {
    int v = p[u].Next[i];
    if (v == -1) continue;
    leaf = false;
    DFS(v, game ^ 1);
    if (game & 1) {
      Win = Win || p[v].Win;
      Lose = Lose || p[v].Lose;
    } else {
      Win = Win && p[v].Win;
      Lose = Lose && p[v].Lose;
    }
  }
  if (leaf) {
    if (game & 1) {
      p[u].Win = 0;
      p[u].Lose = 1;
    } else {
      p[u].Win = 1;
      p[u].Lose = 0;
    }
  } else {
    p[u].Win = Win;
    p[u].Lose = Lose;
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  scanf("%d%d", &n, &k);
  tot = 1;
  for (int i = 0; i < n; i++) {
    scanf("%s", str);
    Insert(str);
  }
  DFS(0, 1);
  int Win = p[0].Win;
  int Lose = p[0].Lose;
  if (!Win)
    cout << "Second" << endl;
  else if (Lose)
    cout << "First" << endl;
  else {
    if (k & 1)
      cout << "First" << endl;
    else
      cout << "Second" << endl;
  }
  return 0;
}
