1class Solution {2public:3vector<vector<string>> suggestedProducts(vector<string> &products, string searchWord) {4map<int, vector<string>> m;5vector<vector<string>> res;6for (int i = 0; i < products.size(); i++) {7int j = 0;8while (products[i][j] == searchWord[j] && j < searchWord.size()) {9if (m.count(j) == 0) {10vector<string> v;11v.push_back(products[i]);12m.insert(make_pair(j, v));13} else {14m[j].push_back(products[i]);15}16j++;17}18}19for (int i = 0; i < searchWord.size(); i++) {20if (i < m.size()) {21sort(m[i].begin(), m[i].end());22int a;23if (3 <= m[i].size()) {24a = 3;25} else {26a = m[i].size();27}28m[i].resize(a);29res.push_back(m[i]);30} else {31res.push_back({});32}33}34return res;35}36};