#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:66777216")
using namespace std;
const int N = 100007;
int n, k;
struct node {
  node *nxt[26];
  node() { memset(nxt, 0, sizeof nxt); }
} * root;
char st[N];
void add(char *st) {
  int len = strlen(st);
  node *T = root;
  for (int i = 0; i < len; ++i) {
    int d = st[i] - 'a';
    if (!T->nxt[d]) T->nxt[d] = new node();
    T = T->nxt[d];
  }
}
int dfs(node *T) {
  for (int i = 0; i < 26; ++i) {
    if (T->nxt[i]) {
      int val = dfs(T->nxt[i]);
      if (val == 0) return 1;
    }
  }
  return 0;
}
int revDfs(node *T) {
  bool ok = false;
  for (int i = 0; i < 26; ++i) {
    if (T->nxt[i]) {
      int val = revDfs(T->nxt[i]);
      if (val == 0) return 1;
      ok = true;
    }
  }
  if (ok) return 0;
  return 1;
}
void solve() {
  root = new node();
  scanf("%d%d", &n, &k);
  for (int i = 0; i < n; ++i) {
    scanf("%s", st);
    add(st);
  }
  int val = dfs(root);
  if (val == 0) {
    puts("Second");
    return;
  }
  k &= 1;
  if (k == 1) {
    if (val)
      puts("First");
    else
      puts("Second");
  } else {
    int rval = revDfs(root);
    if (rval == 1)
      puts("First");
    else
      puts("Second");
  }
}
int main() {
  cerr << fixed;
  cerr.precision(2);
  cout << fixed;
  cout.precision(9);
  solve();
  return 0;
}
