#include <bits/stdc++.h>
using namespace std;
const int mxn = 100005;
struct node {
  int next[27][mxn];
  bool created[mxn];
  int sz;
  void insertTrie(string &s) {
    int v = 0;
    for (int i = 0; i < s.size(); i++) {
      int c = s[i] - 'a';
      if (!created[next[c][v]]) {
        next[c][v] = ++sz;
        created[sz] = true;
      }
      v = next[c][v];
    }
  }
  int CanWin(int v) {
    for (int i = 0; i < 26; i++) {
      if (created[next[i][v]] && !CanWin(next[i][v])) return true;
    }
    return false;
  }
  int CanLose(int v) {
    int pic = true;
    for (int i = 0; i < 26; i++) {
      if (created[next[i][v]] == 0) continue;
      if (created[next[i][v]] && !CanLose(next[i][v]))
        return true;
      else if (created[next[i][v]] != 0)
        pic = 0;
    }
    return pic;
  }
} t;
int main() {
  int n, k;
  cin >> n >> k;
  for (int i = 0; i < n; i++) {
    string s;
    cin >> s;
    t.insertTrie(s);
  }
  int win = t.CanWin(0);
  int lose = t.CanLose(0);
  if (win == 0)
    cout << "Second\n";
  else if (win == 1 && lose == 0) {
    if (k % 2)
      cout << "First\n";
    else
      cout << "Second\n";
  } else if (win == 1 && lose == 1)
    cout << "First\n";
  else
    cout << "Second\n";
}
