#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000 * 100 + 17;
string SS[maxn];
pair<int, int> arr[maxn];
int timi;
struct NODE {
  bool canW, canL;
  NODE* child[30];
  NODE() {
    for (int i = 0; i < 30; i++) child[i] = NULL;
  }
  void add(int id, int str) {
    if (str >= (int)SS[id].size()) return;
    int g = SS[id][str] - 'a';
    if (child[g] == NULL) {
      child[g] = new NODE();
    }
    child[g]->add(id, str + 1);
    return;
  }
  void srch_and_det(int id, int str) {
    if (str < (int)SS[id].size()) {
      int g = SS[id][str] - 'a';
      child[g]->srch_and_det(id, str + 1);
    }
    int t = 0;
    canW = canL = 0;
    for (int i = 0; i < 30; i++)
      if (child[i] != NULL) {
        t++;
        if (!child[i]->canL) canL = 1;
        if (!child[i]->canW) canW = 1;
      }
    if (!t) canL = 1, canW = 0;
    return;
  }
};
int main() {
  int n, k;
  cin >> n >> k;
  NODE* root = new NODE();
  for (int i = 0; i < n; i++) {
    cin >> SS[i];
    arr[i] = pair<int, int>(SS[i].size(), i);
    root->add(i, 0);
  }
  sort(arr, arr + n);
  for (int i = 0; i < n; i++) root->srch_and_det(arr[i].second, 0);
  bool W = root->canW, L = root->canL;
  if (W and L) {
    cout << "First\n";
    return 0;
  }
  if (W) {
    if (k % 2)
      cout << "First\n";
    else
      cout << "Second\n";
    return 0;
  }
  cout << "Second\n";
  return 0;
}
