#include <bits/stdc++.h>
using namespace std;
const long long int MOD = 1000000007;
struct node {
  node *child[26];
  bool isWin;
  bool isLoss;
  node() {
    for (int i = 0; i < 26; i++) child[i] = nullptr;
    isWin = false;
    isLoss = false;
  }
};
void insert(string &s, int i, node *head) {
  if (!head->child[s[i] - 'a']) {
    head->child[s[i] - 'a'] = new node();
    if (i == s.size() - 1) {
      head->child[s[i] - 'a']->isWin = false;
      head->child[s[i] - 'a']->isLoss = true;
      return;
    }
  }
  if (i < s.size() - 1) {
    insert(s, i + 1, head->child[s[i] - 'a']);
  }
  bool val = false, val1 = false;
  int flag = 0;
  for (int j = 0; j < 26; j++) {
    if (head->child[s[i] - 'a']->child[j]) {
      flag = 1;
      val |= !(head->child[s[i] - 'a']->child[j]->isWin);
      val1 |= !(head->child[s[i] - 'a']->child[j]->isLoss);
    }
  }
  if (flag == 1) {
    head->child[s[i] - 'a']->isWin = val;
    head->child[s[i] - 'a']->isLoss = val1;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int N, K;
  cin >> N >> K;
  node *head = new node();
  for (int i = 0; i < N; i++) {
    string s;
    cin >> s;
    insert(s, 0, head);
  }
  bool win = false, loss = false;
  for (int i = 0; i < 26; i++) {
    if (head->child[i]) {
      if (head->child[i]->isWin == false) win = true;
      if (head->child[i]->isLoss == false) loss = true;
    }
  }
  if (win == false)
    cout << "Second"
         << "\n";
  else {
    if (loss == true)
      cout << "First"
           << "\n";
    else if (K % 2 == 0) {
      cout << "Second"
           << "\n";
    } else
      cout << "First"
           << "\n";
  }
}
