#include <bits/stdc++.h>
using namespace std;
inline long long bip(long long x, long long n, long long mod) {
  long long res = 1;
  while (n) {
    if (n & 1) {
      res = (res * x) % mod;
    }
    x = (x * x) % mod;
    n >>= 1;
  }
  return res;
}
const int ppr = 257;
const long long INF = 2e18;
const int inf = 2e9;
const int mod = 1e9 + 7;
const int N = 2e6 + 123;
const long double pi = acos(-1.0);
const int dx[] = {1, 0, -1, 0};
const int dy[] = {0, 1, 0, -1};
int n, b[30][N], w[N], l[N], cnt, k;
string second;
inline int get(const char c) { return (c - 'a'); }
inline void add(const string &second) {
  int v = 0;
  for (int i = 0; i < second.size(); i++) {
    int x = get(second[i]);
    if (b[x][v] == -1) b[x][v] = ++cnt;
    v = b[x][v];
  }
}
void dfs(int v) {
  bool lisT = 1;
  for (int i = 0; i < 26; i++)
    if (b[i][v] != -1) {
      lisT = 0;
      dfs(b[i][v]);
      w[v] = (w[v] | !w[b[i][v]]);
      l[v] = (l[v] | !l[b[i][v]]);
    }
  if (lisT) l[v] = 1;
}
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  memset(b, -1, sizeof(b));
  cin >> n >> k;
  for (int i = 1; i <= n; i++) {
    cin >> second;
    add(second);
  }
  dfs(0);
  if (!w[0]) return cout << "Second", 0;
  if (w[0] && l[0]) return cout << "First", 0;
  if (k % 2)
    cout << "First";
  else
    cout << "Second";
  return 0;
}
