#include <bits/stdc++.h>
using namespace std;
long long a[5000000];
multiset<long long> s;
int main() {
  int t, i;
  long long ele;
  char ch;
  char ss[100];
  scanf("%d", &t);
  while (t--) {
    cin >> ch;
    if (ch == '+') {
      scanf("%lld", &ele);
      s.insert(ele);
      long long newel = ele;
      ele = 0;
      while (newel) {
        if (newel % 10)
          ele = ele * 10 + (newel % 10);
        else
          ele = ele * 10 + 2;
        newel /= 10;
      }
      long long bin = 0;
      while (ele) {
        bin = bin * 2 + ((ele % 10) % 2);
        ele /= 10;
      }
      a[bin]++;
    } else if (ch == '-') {
      scanf("%lld", &ele);
      multiset<long long>::iterator it;
      it = s.find(ele);
      if (it != s.end()) {
        long long bin = 0;
        long long newel = ele;
        ele = 0;
        while (newel) {
          if (newel % 10)
            ele = ele * 10 + (newel % 10);
          else
            ele = ele * 10 + 2;
          newel /= 10;
        }
        while (ele) {
          bin = bin * 2 + ((ele % 10) % 2);
          ele /= 10;
        }
        a[bin]--;
        s.erase(it);
      }
    } else {
      scanf("%s", ss);
      int bin = 0;
      int n = strlen(ss);
      for (i = 0; i < n; i++) {
        if (ss[i] >= '0' && ss[i] <= '9') bin = bin * 2 + (ss[i] - '0');
      }
      printf("%d\n", a[bin]);
    }
  }
  return 0;
}
