#include <bits/stdc++.h>
using namespace std;
template <class A, class B>
ostream& operator<<(ostream& out, const pair<A, B>& a) {
  return out << "(" << a.first << ", " << a.second << ")";
}
typedef struct node {
  node *left, *right;
  node* data[26] = {0};
  int lose, win;
} node;
node* generate() {
  node* n = new node;
  n->left = NULL;
  n->right = NULL;
  n->lose = 1;
  n->win = 0;
  return n;
}
node* insert(node* root, string& s, int level) {
  if (root == NULL) root = generate();
  if (level > 0) {
    int b = s[s.size() - level] - 'a';
    root->data[b] = insert(root->data[b], s, level - 1);
  }
  int counter1[28] = {0}, counter2[28] = {0};
  bool leaf = true;
  for (int i = 0; i < 26; i++) {
    if (root->data[i]) {
      counter1[root->data[i]->win]++;
      counter2[root->data[i]->lose]++;
      leaf = false;
    }
  }
  if (leaf) return root;
  int i = 0;
  for (; i < 28; i++)
    if (!counter1[i]) break;
  root->win = i;
  i = 0;
  for (; i < 28; i++)
    if (!counter2[i]) break;
  root->lose = i;
  return root;
}
int main() {
  {
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
  };
  int n, k;
  cin >> n >> k;
  node* root = NULL;
  for (int i = 0; i < n; i++) {
    string s;
    cin >> s;
    root = insert(root, s, s.size());
  }
  int a = root->win, b = root->lose;
  if (a == 0) {
    cout << "Second" << endl;
  } else {
    if (b != 0) {
      cout << "First" << endl;
    } else {
      if (k % 2 == 1)
        cout << "First" << endl;
      else
        cout << "Second" << endl;
    }
  }
  return 0;
}
