#include <bits/stdc++.h>
using namespace std;
long long int modexp(long long int a, long long int b) {
  long long int res = 1;
  while (b) {
    if (b & 1) res = (res * a) % 1000000007;
    a = (a * a) % 1000000007;
    b >>= 1;
  }
  return res;
}
int tr[100005][26], dp[100005], avl;
string str;
int rec(int pos) {
  if (dp[pos] != -1) return dp[pos];
  int i;
  for (i = 0; i < 26; ++i) {
    if (tr[pos][i] != -1 && !rec(tr[pos][i])) return dp[pos] = true;
  }
  return dp[pos] = false;
}
int rec2(int pos) {
  if (dp[pos] != -1) return dp[pos];
  dp[pos] = true;
  int i;
  int cnt = 0;
  for (i = 0; i < 26; ++i) {
    if (tr[pos][i] == -1) continue;
    if (rec2(tr[pos][i]))
      cnt++;
    else
      return dp[pos] = true;
  }
  if (cnt) return dp[pos] = false;
  return dp[pos];
}
int main() {
  memset(tr, -1, sizeof tr);
  memset(dp, -1, sizeof dp);
  int n, k, i, j, cur, root;
  avl = 1;
  root = 0;
  cin >> n >> k;
  for (i = 0; i < n; ++i) {
    cin >> str;
    cur = root;
    for (j = 0; j < str.size(); ++j) {
      if (tr[cur][str[j] - 'a'] == -1) tr[cur][str[j] - 'a'] = avl++;
      cur = tr[cur][str[j] - 'a'];
    }
  }
  bool First = rec(root);
  memset(dp, -1, sizeof dp);
  if (First) {
    bool Flose = rec2(root);
    if (Flose) {
      puts("First");
    } else {
      if (k & 1)
        puts("First");
      else
        puts("Second");
    }
  } else {
    puts("Second");
  }
  return 0;
}
