func_code_string: #include <bits/stdc++.h>   using namespace std;   struct node {     bool lose, win;     node *child[30];     node() {       lose = true;       win = false;       for (int i = 0; i < 30; i++) child[i] = NULL;     }     void add(queue<char> q) {       if (q.empty()) return;       queue<char> p = q;       char c = q.front();       q.pop();       int t = c -  a ;       if (child[t] == NULL) {         child[t] = new node();         lose = win = false;       }       child[t]->add(q);     }     void dfs() {       bool p = true;       for (int i = 0; i < 30; i++)         if (child[i] != NULL) p = false;       if (p) return;       for (int i = 0; i < 30; i++)         if (child[i] != NULL) {           child[i]->dfs();           if (child[i]->win == false) win = true;           if (child[i]->lose == false) lose = true;         }     }   };   node *root;   int main() {     root = new node();     int n, k;     cin >> n >> k;     for (int i = 0; i < n; i++) {       string s;       cin >> s;       queue<char> q;       for (int j = 0; j < s.length(); j++) q.push(s[j]);       root->add(q);     }     root->dfs();     if (root->lose && root->win)       cout <<  First  << endl;     else if (!root->lose && !root->win)       cout <<  Second  << endl;     else if (root->lose)       cout <<  Second  << endl;     else if (k % 2)       cout <<  First  << endl;     else       cout <<  Second  << endl;     return 0;   }   