#include <bits/stdc++.h>
using namespace std;
const long double Eps = 1e-8;
inline bool is_zero(long double x) { return (x >= -Eps) && (x <= Eps); }
const int MaxLen = 100005, NumCh = 26;
int N, K;
int totalSize = 1;
int nextNode[MaxLen][NumCh];
bool canWin[MaxLen], canLose[MaxLen];
char str[MaxLen];
void input() {
  scanf("%d%d", &N, &K);
  for (int i = 0; i < (N); i++) {
    scanf("%s", str);
    int len = strlen(str);
    int ptr = 0;
    for (int pos = 0; pos < (len); pos++) {
      char c = str[pos] - 'a';
      if (!nextNode[ptr][c]) {
        nextNode[ptr][c] = totalSize++;
      }
      ptr = nextNode[ptr][c];
    }
  }
}
void dfs(int v) {
  bool leaf = true;
  for (int ch = 0; ch < NumCh; ch++) {
    if (nextNode[v][ch]) {
      dfs(nextNode[v][ch]);
      leaf = false;
    }
  }
  if (leaf) {
    canWin[v] = false;
    canLose[v] = true;
    return;
  }
  for (int ch = 0; ch < NumCh; ch++) {
    int numNode = nextNode[v][ch];
    if (numNode) {
      if (!canLose[numNode]) {
        canLose[v] = true;
      }
      if (!canWin[numNode]) {
        canWin[v] = true;
      }
    }
  }
}
int main() {
  input();
  dfs(0);
  if (canWin[0] && canLose[0]) {
    printf("First\n");
  } else if (canLose[0]) {
    printf("Second\n");
  } else if (canWin[0]) {
    printf(K % 2 == 0 ? "Second\n" : "First\n");
  } else {
    printf("Second\n");
  }
  return 0;
}
