class Solution {
public:
    /**
     * 
     * @param operators string字符串vector<vector<>> the ops
     * @return string字符串vector
     */
    unordered_map<string, int> mp,pre;
    vector<string> trieU(vector<vector<string> >& operators) {
        // write code here
        vector<string> ans;
        for(int i = 0;i < operators.size();i++){
           string op = operators[i][0],str = operators[i][1];
            if(op == "1"){
                mp[str]++;
                for(int i = 1;i <= str.size();i++){
                    pre[str.substr(0,i)]++;
                }
            }
            if(op == "2"){
                mp[str]--;
                for(int i = 1;i <= str.size();i++){
                    pre[str.substr(0,i)]--;
                }
            }
            if(op == "3"){
                if(mp[str])    ans.push_back("YES");
                else     ans.push_back("NO");
            }
            if(op == "4"){
                ans.push_back(to_string(pre[str]));
            }
        }
        return ans;
    }
};