func_code_string: #include <bits/stdc++.h>   using namespace std;   struct Node {     Node *arr[26];     int state;     bool isEnd = false;     Node() {       for (int i = 0; i < 26; i++) arr[i] = nullptr;       isEnd = true;     }   };   void insert(const string &s, Node *root) {     Node *curr = root;     for (char c : s) {       if (curr->arr[c -  a ] == nullptr) curr->arr[c -  a ] = new Node();       curr = curr->arr[c -  a ];     }     curr->isEnd = true;   }   int find_state(Node *curr, bool leaf = true) {     bool winning = false;     int cnt = 0;     for (int i = 0; i < 26; i++) {       if (curr->arr[i] != nullptr) {         cnt++;         if (find_state(curr->arr[i], leaf) == 0) winning = true;       }     }     if (cnt == 0) winning = leaf;     return curr->state = winning ? 1 : 0;   }   int main() {     int n, k;     cin >> n >> k;     Node *root = new Node();     for (int i = 0; i < n; i++) {       string s;       cin >> s;       insert(s, root);     }     int st1 = find_state(root, false);     if (k == 1) {       cout << (st1 == 1 ?  First  :  Second ) << endl;     } else {       int st2 = find_state(root, true);       if (st2 == 1 && st1 == 1) {         cout <<  First  << endl;       } else if (st2 == 1 && st1 == 0) {         cout <<  Second  << endl;       } else if (st2 == 0 && st1 == 1) {         cout << (k % 2 == 0 ?  Second  :  First ) << endl;       } else {         cout <<  Second  << endl <<   n ;       }     }     return 0;   }   