#include <bits/stdc++.h>
using namespace std;
struct node {
  bool w, l;
  int a[26];
  node() {
    w = false;
    l = false;
    memset(a, -1, sizeof a);
  }
};
node a[100030];
long long cnt;
char second[100010];
void insert(long long n) {
  int curr = 0;
  int i = 0;
  while (curr < n) {
    if (a[i].a[second[curr] - 'a'] == -1) {
      a[i].a[second[curr] - 'a'] = ++cnt;
    }
    i = a[i].a[second[curr] - 'a'];
    curr++;
  }
}
void dfs(long long curr) {
  if (curr == -1) {
    return;
  }
  int cnt = 0;
  for (int i = 0; i < 26; i++) {
    if (a[curr].a[i] != -1) {
      cnt++;
      dfs(a[curr].a[i]);
      if (a[a[curr].a[i]].w == false) {
        a[curr].w = true;
      }
      if (a[a[curr].a[i]].l == false) {
        a[curr].l = true;
      }
    }
  }
  if (cnt == 0) {
    a[curr].w = false;
    a[curr].l = true;
  }
}
int main() {
  long long n, k;
  cnt = 0;
  cin >> n >> k;
  for (int i = 0; i < n; i++) {
    scanf("%s", second);
    insert(strlen(second));
  }
  dfs(0);
  if (a[0].w == true && a[0].l == true) {
    cout << "First" << endl;
  } else if (a[0].w == false) {
    cout << "Second" << endl;
  } else if (a[0].w == true && a[0].l == false) {
    if (k % 2 == 1) {
      cout << "First" << endl;
    } else {
      cout << "Second" << endl;
    }
  }
  return 0;
}
