#include <bits/stdc++.h>
using namespace std;
struct Node {
  int cnt;
  bool lose, win;
  Node *c[26];
  Node() {
    cnt = 0;
    lose = false;
    win = false;
    for (int i = 0; i < 26; i++) c[i] = NULL;
  }
};
struct Trie {
  Node *phead;
  Trie() { phead = new Node(); }
  void insert(string s) {
    Node *curr = phead;
    for (int i = 0; i < s.length(); i++) {
      if (curr->c[s[i] - 'a'] == NULL) curr->c[s[i] - 'a'] = new Node();
      curr = curr->c[s[i] - 'a'];
    }
    curr->cnt++;
  }
  void dp(Node *cur) {
    bool leaf = true;
    for (int i = 0; i < 26; i++) {
      if (cur->c[i] != NULL) {
        leaf = false;
        dp(cur->c[i]);
        cur->lose |= !cur->c[i]->lose;
        cur->win |= !cur->c[i]->win;
      }
    }
    if (leaf) {
      cur->lose = true;
    }
  }
};
void printAnswer(bool x) { cout << (x ? "First" : "Second"); }
string sx[100005];
int main() {
  Trie trie;
  string s;
  int n, k;
  cin >> n >> k;
  for (int i = 0; i < n; i++) {
    cin >> sx[i];
    trie.insert(sx[i]);
  }
  trie.dp(trie.phead);
  if (k == 1)
    printAnswer(trie.phead->win);
  else if (trie.phead->win == false)
    printAnswer(false);
  else if (trie.phead->lose == true)
    printAnswer(true);
  else
    printAnswer(k % 2);
  return 0;
}
