#include <bits/stdc++.h>
using namespace std;
struct node {
  node *arr[27];
  int ind;
  node() {
    memset(arr, 0, sizeof arr);
    ind = 0;
  }
};
const int N = 1e5 + 5;
int dp[N][2];
node *root;
int nodes = 0;
void insert(string &s) {
  node *cur = root;
  for (int i = 0; i < s.size(); i++) {
    int x = s[i] - 'a';
    if (!cur->arr[x]) cur->arr[x] = new node(), cur->arr[x]->ind = ++nodes;
    cur = cur->arr[x];
  }
}
bool solve(node *cur, bool f) {
  int &ret = dp[cur->ind][f];
  if (ret != -1) return ret;
  bool flag = 0, flag1 = 0, flag2 = 1;
  for (int i = 0; i < 26; i++) {
    if (cur->arr[i]) {
      flag = 1;
      flag1 |= solve(cur->arr[i], !f);
      flag2 &= solve(cur->arr[i], !f);
    }
  }
  if (!flag) return ret = !f;
  if (f) return ret = flag1;
  return ret = flag2;
}
int dp2[N][2];
bool solve2(node *cur, bool f) {
  int &ret = dp2[cur->ind][f];
  if (ret != -1) return ret;
  bool flag = 0, flag1 = 0, flag2 = 1;
  for (int i = 0; i < 26; i++) {
    if (cur->arr[i]) {
      flag = 1;
      flag1 |= solve2(cur->arr[i], !f);
      flag2 &= solve2(cur->arr[i], !f);
    }
  }
  if (!flag) return ret = !f;
  if (f) return ret = flag2;
  return ret = flag1;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  memset(dp, -1, sizeof dp);
  memset(dp2, -1, sizeof dp2);
  root = new node();
  int n, k;
  cin >> n >> k;
  for (int i = 0; i < n; i++) {
    string s;
    cin >> s;
    insert(s);
  }
  node *cur = root;
  if (solve(cur, 1) && !solve2(cur, 1))
    cout << "First";
  else if (solve(cur, 1)) {
    if (k % 2 == 1)
      cout << "First";
    else
      cout << "Second";
  } else
    cout << "Second";
  return 0;
}
