#include<bits/stdc++.h>
using namespace std;
template<class T> string Ans(T &x){return x ? "YES\n":"NO\n";}
int32_t main(){
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int n,m;
    cin>>n>>m;
    multiset<pair<int,int>> s;
    multiset<pair<int,int>> s1[27];
    map<pair<int,int>,char> col;
    int odd=0,even=0;
    for (;m;m--){
        char z;
        cin>>z;
        if (z=='+'){
            int x,y;
            char c;
            cin>>x>>y>>c;
            if (s.find({y,x})!=s.end()){
                odd++;
            }
            s.insert({x,y});
            s.insert({x,y});
            col[{x,y}]=c;
            if (s1[c-'a'].find({y,x})!=s1[c-'a'].end()){
                even++;
            }
            s1[c-'a'].insert({x,y});
        }
        else if(z=='-'){
            int x,y;
            cin>>x>>y;
            if (s.find({y,x})!=s.end()){
                odd--;
            }
            s.erase({x,y});
            s.erase({x,y});
            char c=col[{x,y}];
            col.erase({x,y});
            if (s1[c-'a'].find({y,x})!=s1[c-'a'].end()){
                even--;
            }
            s1[c-'a'].erase({x,y});
        }
        else{
            int k;
            cin>>k;
            if (k&1){
                cout<<Ans(odd);
            }
            else{
                cout<<Ans(even);
            }
        }
    }
}