#include <bits/stdc++.h>
using namespace std;
struct node;
struct node {
  node* arr[26];
  int val;
  node();
  void insert(char ch[], int l, int pos);
  void win();
  void lose();
};
node::node() {
  val = 0;
  for (int i = 0; i < 26; i++) arr[i] = 0;
}
void node::insert(char ch[], int l, int pos) {
  if (pos == l)
    return;
  else {
    int index = ch[pos] - 'a';
    if (arr[index] == 0) {
      arr[index] = new node();
      arr[index]->insert(ch, l, pos + 1);
    } else {
      arr[index]->insert(ch, l, pos + 1);
    }
  }
}
void node::win() {
  int ind = 0;
  for (int i = 0; i < 26; i++) {
    if (arr[i] != 0) {
      arr[i]->win();
      ind = ind | arr[i]->val;
    }
  }
  val = !ind;
}
void node::lose() {
  int ind = 1;
  int leaf = 1;
  for (int i = 0; i < 26; i++) {
    if (arr[i] != 0) {
      leaf = 0;
      arr[i]->lose();
      ind = ind & arr[i]->val;
    }
  }
  if (leaf)
    val = leaf;
  else
    val = !ind;
}
int main() {
  int n, k;
  scanf("%d %d", &n, &k);
  node* root = new node();
  char ch[100000];
  for (int i = 0; i < n; i++) {
    scanf("%s", ch);
    int l = strlen(ch);
    root->insert(ch, l, 0);
  }
  int ind = 0;
  for (int i = 0; i < 26; i++) {
    if (root->arr[i] != 0) {
      root->arr[i]->win();
      ind = ind | root->arr[i]->val;
    }
  }
  int w = ind;
  ind = 0;
  for (int i = 0; i < 26; i++) {
    if (root->arr[i] != 0) {
      root->arr[i]->lose();
      ind = ind | !root->arr[i]->val;
    }
  }
  int l = ind;
  if (w & l) {
    printf("First\n");
  } else if (w & !l) {
    if (k & 1)
      printf("First\n");
    else
      printf("Second\n");
  } else
    printf("Second\n");
}
