#include <bits/stdc++.h>
using namespace std;
int size01(int x) { return __builtin_popcount(x); }
const long long INFll = 0x3f3f3f3f3f3f3f3fLL;
const int INF = 0x7ffffff;
const int maxn = 1e5 + 100;
const int mod = 1000000007;
const double pi = acos(-1);
const double eps = 1e-10;
complex<double> rotate(complex<double> v, double a) {
  return v * polar(1.0, a);
}
int dx[] = {0, -1, 0, 1};
int dy[] = {-1, 0, 1, 0};
struct trie {
  bool f;
  map<char, int> next;
};
trie t[100005];
int nt;
void tinit() {
  nt = 1;
  t[0].f = false;
  t[0].next.clear();
}
void tinsert(char *S) {
  int m = strlen(S);
  int p = 0;
  for (int i = 0; i < m; ++i) {
    if (t[p].next.find(S[i]) == t[p].next.end()) {
      t[nt].f = false;
      t[nt].next.clear();
      t[p].next[S[i]] = nt++;
    }
    p = t[p].next[S[i]];
  }
  t[p].f = true;
}
int winner(int p) {
  for (map<char, int>::iterator it = t[p].next.begin(); it != t[p].next.end();
       ++it) {
    if (winner(it->second) == 1) {
      return 0;
    }
  }
  return 1;
}
int loser(int p) {
  if (t[p].next.empty()) return 0;
  for (map<char, int>::iterator it = t[p].next.begin(); it != t[p].next.end();
       ++it) {
    if (loser(it->second) == 1) {
      return 0;
    }
  }
  return 1;
}
int n, k;
char S[100005];
int qwe(int w, int l) {
  if (w == 0) {
    if (l == 0)
      return 0;
    else
      return 1 - (k % 2);
  } else
    return 1;
}
int main() {
  scanf("%d %d", &n, &k);
  tinit();
  gets(S);
  while (n--) {
    gets(S);
    tinsert(S);
  }
  int w = winner(0), l = loser(0);
  puts(qwe(w, l) ? "Second" : "First");
  return 0;
}
