#include <bits/stdc++.h>
using namespace std;
struct trie_node {
  int ch[26];
  int key;
};
struct trie {
  trie_node t[2000005];
  int tot;
  void clear() {
    tot = 0;
    memset(t[0].ch, 0, sizeof(t[0].ch));
  }
  int new_node() {
    tot++;
    t[tot].key = 0;
    memset(t[tot].ch, 0, sizeof(t[tot].ch));
    return tot;
  }
  void insert(char s[]) {
    int l = strlen(s);
    int root = 0;
    for (int i = 0; i < l; i++) {
      if (!t[root].ch[s[i] - 'a']) {
        t[root].ch[s[i] - 'a'] = new_node();
      }
      root = t[root].ch[s[i] - 'a'];
    }
    t[root].key++;
  }
  int dp(int state) {
    bool lif = true;
    bool haslose = false;
    for (int i = 0; i < 26; ++i) {
      if (t[state].ch[i]) {
        lif = false;
        if (dp(t[state].ch[i]) == 0) haslose = true;
      }
    }
    if (lif) return false;
    return haslose;
  }
  int dp2(int state) {
    bool lif = true;
    bool haslose = false;
    for (int i = 0; i < 26; ++i) {
      if (t[state].ch[i]) {
        lif = false;
        if (dp2(t[state].ch[i]) == 0) haslose = true;
      }
    }
    if (lif) return true;
    return haslose;
  }
} dict;
char s[200005];
int n, k;
int main() {
  scanf("%d %d", &n, &k);
  for (int i = 1; i <= n; ++i) {
    scanf("%s", s);
    dict.insert(s);
  }
  int win = dict.dp(0);
  int lose = dict.dp2(0);
  if (win && lose) {
    printf("First\n");
  } else if (win && !lose) {
    if (k & 1) {
      printf("First\n");
    } else {
      printf("Second\n");
    }
  } else {
    printf("Second\n");
  }
  return 0;
}
