#include <bits/stdc++.h>
using namespace std;
int sz, ch[100005][26], dp[100005];
char s[100005];
struct Tire {
  Tire() {
    sz = 1;
    memset(ch[0], 0, sizeof(ch[0]));
  }
  int idx(char c) { return c - 'a'; }
  void insert(char *s) {
    int u = 0, n = strlen(s);
    for (int i = 0; i < n; i++) {
      int c = idx(s[i]);
      if (!ch[u][c]) {
        memset(ch[sz], 0, sizeof(ch[sz]));
        ch[u][c] = sz++;
      }
      u = ch[u][c];
    }
  }
  bool dfs(int u) {
    for (int i = 0; i < 26; i++) {
      if (ch[u][i]) {
        if (dfs(ch[u][i])) return false;
      }
    }
    return true;
  }
  bool dfss(int u) {
    bool ret = 0;
    for (int i = 0; i < 26; i++) {
      if (ch[u][i]) {
        ret++;
        if (dfss(ch[u][i])) return false;
      }
    }
    if (ret) return true;
    return false;
  }
};
int main() {
  int n, k;
  scanf("%d%d", &n, &k);
  Tire T;
  for (int i = 1; i <= n; i++) {
    scanf("%s", s);
    T.insert(s);
  }
  bool ans1 = 0, ans2 = 0;
  for (int i = 0; i < 26; i++) {
    if (ch[0][i]) {
      if (T.dfs(ch[0][i])) {
        ans1 = 1;
      }
    }
  }
  for (int i = 0; i < 26; i++) {
    if (ch[0][i]) {
      if (T.dfss(ch[0][i])) {
        ans2 = 1;
      }
    }
  }
  if (!ans1)
    printf("Second\n");
  else {
    if (ans2)
      printf("First\n");
    else {
      if (k & 1)
        printf("First\n");
      else
        printf("Second\n");
    }
  }
  return 0;
}
