#include <bits/stdc++.h>
using namespace std;
void _fill_int(int* p, int val, int rep) {
  int i;
  for (i = 0; i < rep; i++) p[i] = val;
}
signed long long N, K;
vector<string> S;
class Trie {
 public:
  vector<vector<int> > V;
  int find(string s) {
    int cur = 0;
    for (__typeof(s.begin()) it = s.begin(); it != s.end(); it++)
      if ((cur = V[cur][*it]) == 0) return -1;
    return cur;
  }
  void create(vector<string> S) {
    V.clear();
    V.push_back(vector<int>(256));
    sort(S.begin(), S.end());
    for (__typeof(S.begin()) it = S.begin(); it != S.end(); it++) {
      int cur = 0;
      for (__typeof((*it).begin()) c = (*it).begin(); c != (*it).end(); c++) {
        if (V[cur][*c] == 0)
          V.push_back(vector<int>(256)), V[cur][*c] = V.size() - 1;
        cur = V[cur][*c];
      }
    }
  }
};
Trie t;
bool winwin(int cur) {
  int i;
  for (i = 0; i < 256; i++)
    if (t.V[cur][i] != 0) {
      if (winwin(t.V[cur][i]) == false) return true;
    }
  return false;
}
bool loselose(int cur) {
  int i, num = 0;
  for (i = 0; i < 256; i++)
    if (t.V[cur][i] != 0) {
      if (loselose(t.V[cur][i]) == false) return true;
      if (loselose(t.V[cur][i]) == true) num++;
    }
  if (num) return false;
  return true;
}
void solve() {
  int f, i, j, k, l, x, y;
  cin >> N >> K;
  for (i = 0; i < N; i++) {
    string s;
    cin >> s;
    S.push_back(s);
  }
  t.create(S);
  bool b1 = winwin(0);
  bool b2 = loselose(0);
  if (!b1) {
    cout << "Second" << endl;
  } else {
    if (b2) {
      cout << "First" << endl;
    } else {
      if (K % 2)
        cout << "First" << endl;
      else
        cout << "Second" << endl;
    }
  }
}
int main(int argc, char** argv) {
  string s;
  if (argc == 1) ios::sync_with_stdio(false);
  for (int i = 1; i < argc; i++) s += argv[i], s += '\n';
  for (int i = s.size() - 1; i >= 0; i--) ungetc(s[i], stdin);
  solve();
  return 0;
}
