#include <bits/stdc++.h>
using namespace std;
const int MAX = 26;
struct graph {
  graph* x[MAX];
};
graph arr[MAX];
bool win(graph*);
bool lose(graph*);
void print_tree(graph*);
int main() {
  int q, k;
  cin >> q >> k;
  graph* tree = new graph{};
  while (q--) {
    string s;
    cin >> s;
    graph* pt = tree;
    for (char ch : s) {
      if (pt->x[ch - 'a'] == nullptr) pt->x[ch - 'a'] = new graph{};
      pt = pt->x[ch - 'a'];
    }
  }
  bool can_win, can_lose;
  can_win = win(tree);
  can_lose = lose(tree);
  if (can_lose & can_win)
    cout << "First";
  else if (can_win)
    cout << (k % 2 ? "First" : "Second");
  else
    cout << "Second";
  return 0;
}
bool win(graph* t) {
  bool ans = false;
  int c = 0;
  for (int i = 0; i < MAX; i++) {
    if (t->x[i] == nullptr) continue;
    ++c;
    ans |= !win(t->x[i]);
  }
  if (c == 0) return false;
  return ans;
}
bool lose(graph* t) {
  bool ans = false;
  int c = 0;
  for (int i = 0; i < MAX; i++) {
    if (t->x[i] == nullptr) continue;
    ++c;
    ans |= !lose(t->x[i]);
  }
  if (c == 0) return true;
  return ans;
}
