#include <bits/stdc++.h>
using namespace std;
#pragma warning(disable : 4996)
const int maxn = 1e5 + 10;
vector<int> son[maxn];
int dp[1111111 + 10];
int len;
struct Node {
  int val;
  Node *next[26];
} node[1111111 + 10];
Node *newnode() {
  memset(&node[len], 0, sizeof(node[len]));
  node[len].val = len;
  return &node[len++];
}
void Insert(char *s, Node *root) {
  int l = strlen(s);
  for (int i = 0; i < l; i++) {
    int t = s[i] - 'a';
    if (!root->next[t]) {
      root->next[t] = newnode();
    }
    root = root->next[t];
  }
}
void init(Node *root) {
  for (int i = 0; i < 26; i++) {
    if (root->next[i]) {
      int t = root->val;
      son[t].push_back(root->next[i]->val);
    }
  }
  for (int i = 0; i < 26; i++) {
    if (root->next[i]) {
      init(root->next[i]);
    }
  }
}
int gao(int fa) {
  if (~dp[fa]) return dp[fa];
  int ans = 1;
  if (son[fa].size() == 0) return 1;
  for (int i = 0; i < son[fa].size(); i++) {
    int t = son[fa][i];
    if (gao(t)) ans = 0;
  }
  return dp[fa] = ans;
}
int gao1(int fa) {
  int ans = 1;
  if (~dp[fa]) return dp[fa];
  if (son[fa].size() == 0) return 0;
  for (int i = 0; i < son[fa].size(); i++) {
    int t = son[fa][i];
    if (gao1(t)) ans = 0;
  }
  return dp[fa] = ans;
}
char str[maxn];
int main() {
  int n, k;
  cin >> n >> k;
  len = 0;
  memset(dp, -1, sizeof(dp));
  Node *root = newnode();
  for (int i = 0; i < n; i++) {
    scanf("%s", str);
    Insert(str, root);
  }
  init(root);
  int t = gao(0);
  t ^= 1;
  memset(dp, -1, sizeof(dp));
  int t1 = gao1(0);
  t1 ^= 1;
  if ((t && t1) || (t && !t1 && (k & 1)))
    printf("First\n");
  else
    printf("Second\n");
  return 0;
}
