#include <bits/stdc++.h>
using namespace std;
struct node {
  bool lose, win;
  node *child[30];
  node() {
    lose = true;
    win = false;
    for (int i = 0; i < 30; i++) child[i] = NULL;
  }
  void add(queue<char> q) {
    if (q.empty()) return;
    queue<char> p = q;
    char c = q.front();
    q.pop();
    int t = c - 'a';
    if (child[t] == NULL) {
      child[t] = new node();
      lose = win = false;
    }
    child[t]->add(q);
  }
  void dfs() {
    bool p = true;
    for (int i = 0; i < 30; i++)
      if (child[i] != NULL) p = false;
    if (p) return;
    for (int i = 0; i < 30; i++)
      if (child[i] != NULL) {
        child[i]->dfs();
        if (child[i]->win == false) win = true;
        if (child[i]->lose == false) lose = true;
      }
  }
};
node *root;
int main() {
  root = new node();
  int n, k;
  cin >> n >> k;
  for (int i = 0; i < n; i++) {
    string s;
    cin >> s;
    queue<char> q;
    for (int j = 0; j < s.length(); j++) q.push(s[j]);
    root->add(q);
  }
  root->dfs();
  if (root->lose && root->win)
    cout << "First" << endl;
  else if (!root->lose && !root->win)
    cout << "Second" << endl;
  else if (root->lose)
    cout << "Second" << endl;
  else if (k % 2)
    cout << "First" << endl;
  else
    cout << "Second" << endl;
  return 0;
}
