func_code_string: #include <bits/stdc++.h>   using namespace std;   char str[100003];   struct Node {     int val;     int val2;     Node* pt[26];   } node[100003];   int cnt;   int mex(Node* node) {     if (node->val != -1) return node->val;     int f[30] = {};     for (int i = 0; i < 26; ++i)       if (node->pt[i]) f[mex(node->pt[i])] = 1;     for (int i = 0; i < 30; ++i)       if (f[i] == 0) return node->val = i;   }   int mex2(Node* node) {     if (node->val2 != -1) return node->val2;     int f[30] = {};     int flag = 0;     for (int i = 0; i < 26; ++i)       if (node->pt[i]) {         f[mex2(node->pt[i])] = 1;         flag = 1;       }     if (!flag) return node->val2 = 1;     for (int i = 0; i < 30; ++i)       if (f[i] == 0) return node->val2 = i;   }   int main() {     cnt = 27;     int N, K;     cin >> N >> K;     for (int i = 0; i < 100003; ++i) node[i].val = node[i].val2 = -1;     for (int i = 0; i < N; ++i) {       cin >> str;       Node* now = node;       now->pt[str[0] -  a ] = node + str[0] -  a  + 1;       for (int j = 0; str[j]; ++j)         if (now->pt[str[j] -  a ])           now = now->pt[str[j] -  a ];         else           now = now->pt[str[j] -  a ] = node + cnt++;     }     if (mex(node) == 0)       cout <<  Second  << endl;     else if (K % 2 == 1 || mex2(node))       cout <<  First  << endl;     else       cout <<  Second  << endl;     return 0;   }   