#include <bits/stdc++.h>
using namespace std;
const int maxn = 100501;
struct bor {
  int a[27];
};
bor q[maxn];
int free1 = 0;
void add(string &s, int pos, int i) {
  if (pos == (int)s.size()) {
    return;
  }
  if (q[i].a[s[pos] - 'a' + 1] == 0) {
    free1++;
    q[i].a[s[pos] - 'a' + 1] = free1;
  }
  add(s, pos + 1, q[i].a[s[pos] - 'a' + 1]);
  return;
}
bool u[2 * maxn];
bool was[2 * maxn];
bool dfs(int i) {
  u[i] = true;
  was[i] = false;
  int y = 0;
  int t = 0;
  for (int j = 1; j < 27; j++) {
    int r = q[i].a[j];
    if (r != 0) {
      y++;
      if (dfs(r) == true) {
        t++;
      }
      if (was[r] == false) {
        was[i] = true;
        if (i == 0) {
        }
      }
    }
  }
  if (y == 0) {
    was[i] = true;
  }
  if (t == y) {
    u[i] = false;
  }
  return u[i];
}
int main() {
  int n, k;
  cin >> n >> k;
  for (int i = 0; i < n; i++) {
    string s;
    cin >> s;
    add(s, 0, 0);
  }
  bool q = dfs(0);
  if (q == false) {
    cout << "Second";
  } else {
    if (was[0] == true) {
      cout << "First";
    } else if (k % 2 == 0) {
      cout << "Second";
    } else
      cout << "First";
  }
  return 0;
}
