#include <bits/stdc++.h>
using namespace std;
struct node {
  bool win, lose;
  node *child[26];
};
node *newnode() {
  node *temp = new node;
  temp->win = false;
  temp->lose = false;
  for (int i = 0; i < 26; i++) temp->child[i] = NULL;
  return temp;
}
node *insert(node *root, string s) {
  int n = s.length();
  bool flag = true;
  node *temp = root;
  int i;
  for (i = 0; i < n; i++) {
    int ind = s[i] - 'a';
    if (!temp->child[ind]) temp->child[ind] = newnode();
    temp = temp->child[ind];
  }
  return root;
}
bool islast(node *root) {
  int i;
  for (i = 0; i < 26; i++) {
    if (root->child[i]) return false;
  }
  return true;
}
node *display(node *root, string str) {
  if (root == NULL) return root;
  if (islast(root)) {
    root->win = false;
    root->lose = true;
    return root;
  }
  node *temp = root;
  int i;
  for (i = 0; i < 26; i++) {
    if (root->child[i]) {
      char ch = i + 'a';
      display(root->child[i], str + ch);
      root->win = (root->win == true || root->child[i]->win == false);
      root->lose = (root->lose == true || root->child[i]->lose == false);
    }
  }
  return root;
}
int main() {
  int n, k;
  cin >> n >> k;
  string s[n];
  int i;
  node *root = newnode();
  for (i = 0; i < n; i++) {
    cin >> s[i];
    root = insert(root, s[i]);
  }
  string str = "";
  root = display(root, str);
  bool canwin = root->win;
  bool canlose = root->lose;
  if (k == 1) {
    if (canwin)
      cout << "First" << endl;
    else
      cout << "Second" << endl;
  } else if (canwin) {
    if (canlose)
      cout << "First" << endl;
    else if (k % 2 == 1)
      cout << "First" << endl;
    else
      cout << "Second" << endl;
  } else
    cout << "Second" << endl;
  return 0;
}
