#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:102400000,102400000")
const int inf = 1 << 30;
const long long INF = 1LL << 60;
const double eps = 1e-10;
const double PI = (double)acos(-1.0);
using namespace std;
struct Trie {
  int ch[100010][26];
  int size;
  void Init() {
    size = 1;
    memset(ch[0], 0, sizeof ch[0]);
  }
  int idx(char c) { return c - 'a'; }
  void Insert(char* s) {
    int u = 0, v, len = strlen(s);
    for (int i = 0; i < len; i++) {
      v = idx(s[i]);
      if (!ch[u][v]) {
        memset(ch[size], 0, sizeof ch[size]);
        ch[u][v] = size++;
      }
      u = ch[u][v];
    }
  }
  int Search(int u, char c) {
    int v;
    v = idx(c);
    return ch[u][v];
  }
} mytrie;
int n, m;
char s[100010];
int ret1, ret2, ret;
int PK1(int u) {
  for (char c = 'a'; c <= 'z'; c++) {
    int ret = mytrie.Search(u, c);
    if (ret) {
      if (!PK1(ret)) return 1;
    }
  }
  return 0;
}
int PK2(int u) {
  bool mov = false;
  for (char c = 'a'; c <= 'z'; c++) {
    int ret = mytrie.Search(u, c);
    if (ret) {
      if (!PK2(ret)) return 1;
      mov = true;
    }
  }
  if (mov) return 0;
  return 1;
}
int main() {
  while (scanf("%d%d", &n, &m) != EOF) {
    mytrie.Init();
    while (n--) {
      scanf("%s", s);
      mytrie.Insert(s);
    }
    ret1 = PK1(0);
    ret2 = PK2(0);
    if (ret1 && ret2)
      ret = 1;
    else if (ret1)
      ret = m % 2;
    else
      ret = 0;
    if (ret)
      printf("First\n");
    else
      printf("Second\n");
  }
  return 0;
}
