#include <bits/stdc++.h>
using namespace std;
struct Node {
  int u;
  map<char, int> child;
};
vector<Node> grafo;
int win[100005], lose[100005];
void addTrie(int u, string &s) {
  for (char c : s) {
    if (grafo[u].child.count(c) == 0) {
      Node novo;
      novo.u = grafo.size();
      grafo[u].child[c] = grafo.size();
      grafo.push_back(novo);
    }
    u = grafo[grafo[u].child[c]].u;
  }
}
void solve(int u) {
  if (grafo[u].child.size() == 0) {
    win[u] = 0;
    lose[u] = 1;
  }
  for (pair<int, int> par : grafo[u].child) {
    int v = par.second;
    solve(v);
    win[u] = (win[u] || !win[v]);
    lose[u] = (lose[u] || !lose[v]);
  }
}
int main() {
  ios::sync_with_stdio(false);
  Node root;
  root.u = 0;
  grafo.push_back(root);
  int n, k;
  cin >> n >> k;
  for (int i = 0; i < n; i++) {
    string s;
    cin >> s;
    addTrie(0, s);
  }
  solve(0);
  int w = win[0], l = lose[0];
  if (w == 0)
    cout << "Second" << endl;
  else if (w == 1 && l == 1)
    cout << "First" << endl;
  else if (w == 1 && l == 0 && k % 2 != 0)
    cout << "First" << endl;
  else
    cout << "Second" << endl;
  return 0;
}
