#include <bits/stdc++.h>
using namespace std;
map<long long, int> exist;
map<pair<long long, int>, int> dp;
char s[100005];
long long calcHash(long long hash, int c, long long MOD) {
  return ((hash << 5) % MOD + c) % MOD;
}
void Hash(char str[], long long MOD) {
  long long hash = 1;
  int Sz = strlen(str);
  int c;
  for (int i = 0; i < Sz; i++) {
    c = str[i] - 'a';
    hash = ((hash << 5) % MOD + c) % MOD;
    exist[hash] = 1;
  }
}
int Solve(long long hash1, long long hash2, bool player) {
  if (dp.count(pair<long long, int>(hash1, player)))
    return dp[pair<long long, int>(hash1, player)];
  int ret = 0;
  for (int i = 0; i < 26; i++)
    if (exist.count(calcHash(hash1, i, 1000000007)) &&
        exist.count(calcHash(hash2, i, 1000000003)))
      ret |= Solve(calcHash(hash1, i, 1000000007),
                   calcHash(hash2, i, 1000000003), !player);
  return !(dp[pair<long long, int>(hash1, player)] = ret);
}
int Solve2(long long hash1, long long hash2, bool player) {
  if (dp.count(pair<long long, int>(hash1, player)))
    return dp[pair<long long, int>(hash1, player)];
  bool f = 0;
  int ret = 0;
  for (int i = 0; i < 26; i++)
    if (exist.count(calcHash(hash1, i, 1000000007)) &&
        exist.count(calcHash(hash2, i, 1000000003)))
      ret |= Solve2(calcHash(hash1, i, 1000000007),
                    calcHash(hash2, i, 1000000003), !player),
          f = 1;
  if (!f) ret = 1;
  return !(dp[pair<long long, int>(hash1, player)] = ret);
}
int main() {
  char out[][10] = {"Second", "First"};
  int N, K;
  scanf("%d %d", &N, &K);
  for (int i = 0; i < N; i++) {
    scanf("%s", s);
    Hash(s, 1000000007);
    Hash(s, 1000000003);
  }
  bool win = !Solve(1, 1, 0);
  dp.clear();
  bool loos = !Solve2(1, 1, 0);
  if (win && !loos && !(K & 1)) win = !win;
  if (win && loos) win = 1;
  printf("%s\n", out[win]);
  return 0;
}
