#include <bits/stdc++.h>
using namespace std;
int counter, dp[100009];
struct node {
  int prefix_count;
  bool isEnd;
  struct node *child[26];
} * head;
void init() {
  head = new node();
  head->isEnd = false;
  head->prefix_count = 0;
}
void insert(string word) {
  node *current = head;
  for (int i = 0; i < word.length(); ++i) {
    int letter = (int)word[i] - (int)'a';
    if (current->child[letter] == NULL) {
      current->child[letter] = new node();
      current->child[letter]->prefix_count = ++counter;
    }
    current = current->child[letter];
  }
  current->isEnd = true;
}
void breaktrie(node *head, node *par, int no) {
  bool ch = false;
  for (int i = int(0); i <= int(25); i++) {
    if (head->child[i] != NULL) {
      ch = true;
      breaktrie(head->child[i], head, i);
    }
  }
  if (!ch) par->child[no] = NULL;
}
int memoize(int idx, node *cur) {
  if (dp[idx] != -1) return dp[idx];
  set<int> val;
  for (int i = int(0); i <= int(25); i++) {
    if (cur->child[i] != NULL)
      val.insert(memoize(cur->child[i]->prefix_count, cur->child[i]));
  }
  int num = 0;
  set<int>::iterator it = val.begin();
  while (it != val.end()) {
    if (num == *it) {
      num++;
      it++;
    } else
      break;
  }
  return dp[idx] = num;
}
int main() {
  init();
  int n, k;
  scanf("%d", &n);
  scanf("%d", &k);
  for (int i = int(0); i <= int(n - 1); i++) {
    string val;
    cin >> val;
    insert(val);
  }
  memset(dp, -1, sizeof(dp));
  int ans1 = memoize(0, head);
  memset(dp, -1, sizeof(dp));
  breaktrie(head, NULL, -1);
  int ans2 = memoize(0, head);
  if (ans1 == 0)
    printf("Second\n");
  else if (ans1 > 0 && ans2 > 0)
    printf("First\n");
  else if (k % 2 == 1)
    printf("First\n");
  else
    printf("Second\n");
  return 0;
}
