#include <bits/stdc++.h>
using namespace std;
const int MAX_N = int(1e6) + 10;
const long long int MOD = 998244353;
const long long int INF = 1e18;
inline long long int mul(long long int a, long long int b) {
  a = (a + MOD) % MOD;
  b = (b + MOD) % MOD;
  long long int c = a * b;
  c = (c + MOD) % MOD;
  return c;
}
inline long long int add(long long int a, long long int b) {
  a = (a + MOD) % MOD;
  b = (b + MOD) % MOD;
  long long int ans = (a + b);
  ans = (ans + MOD) % MOD;
  return ans;
}
long long int power(long long int a, long long int b, long long int c = 0) {
  long long int ans = 1;
  while (b) {
    if (b & 1) {
      ans = mul(ans, a);
    }
    a = mul(a, a);
    b = b / 2;
  }
  return ans;
}
int n, k;
int arr[100005][26];
int nxt;
bool win[100005];
bool loose[100005];
void add(string &s) {
  int node = 0;
  for (int i = 0; i < s.size(); i++) {
    if (arr[node][s[i] - 'a'] == -1) arr[node][s[i] - 'a'] = nxt++;
    node = arr[node][s[i] - 'a'];
  }
}
void dfs(int x) {
  bool f = true;
  for (int i = 0; i < 26; i++) {
    if (arr[x][i] != -1) {
      dfs(arr[x][i]);
      f = false;
      win[x] |= (!win[arr[x][i]]);
      loose[x] |= (!loose[arr[x][i]]);
    }
  }
  if (f) {
    win[x] = false;
    loose[x] = true;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  memset(arr, -1, sizeof(arr));
  nxt = 1;
  cin >> n >> k;
  for (int i = 1; i <= n; i++) {
    string s;
    cin >> s;
    add(s);
  }
  dfs(0);
  if (win[0] == false)
    cout << "Second"
         << "\n";
  else if (win[0] == true && loose[0] == true)
    cout << "First"
         << "\n";
  else if (win[0] == true && loose[0] == false) {
    if (k % 2 == 1)
      cout << "First"
           << "\n";
    else
      cout << "Second"
           << "\n";
  }
}
