#include <bits/stdc++.h>
using namespace std;
void fre() {
  freopen("c://test//input.in", "r", stdin);
  freopen("c://test//output.out", "w", stdout);
}
template <class T1, class T2>
inline void gmax(T1 &a, T2 b) {
  if (b > a) a = b;
}
template <class T1, class T2>
inline void gmin(T1 &a, T2 b) {
  if (b < a) a = b;
}
const int N = 1e6 + 10, M = 0, Z = 1e9 + 7, ms63 = 0x3f3f3f3f;
int n, k;
char s[N];
int a[N][26];
bool leaf_no[N];
bool leaf_yes[N];
void dfs(int x) {
  bool leaf = 1;
  leaf_no[x] = 0;
  leaf_yes[x] = 0;
  for (int i = 0; i < 26; ++i)
    if (a[x][i]) {
      leaf = 0;
      int y = a[x][i];
      dfs(y);
      if (!leaf_no[y]) leaf_no[x] = 1;
      if (!leaf_yes[y]) leaf_yes[x] = 1;
    }
  if (leaf) {
    leaf_no[x] = 0;
    leaf_yes[x] = 1;
  }
}
int main() {
  while (~scanf("%d%d", &n, &k)) {
    memset(a, 0, sizeof(a));
    int id = 0;
    for (int i = 1; i <= n; ++i) {
      scanf("%s", s);
      int k = 0;
      for (int j = 0; s[j]; ++j) {
        int x = s[j] - 'a';
        if (a[k][x] == 0) a[k][x] = ++id;
        k = a[k][x];
      }
    }
    dfs(0);
    bool ln = leaf_no[0];
    bool ly = leaf_yes[0];
    if (ly && ln)
      puts("First");
    else if (!ln)
      puts("Second");
    else
      puts(k & 1 ? "First" : "Second");
  }
  return 0;
}
