#include <bits/stdc++.h>
using namespace std;
const int N = 5e4 + 30;
const int P = 220;
const int Q = 25e4 + 30;
set<int> Sasiedzi[N];
set<int> DuziSasiedzi[N];
set<int>::iterator it;
int Suma[N];
int Online[N];
void WczytajDane(int &n, int &m, int &q) {
  cin >> n >> m >> q;
  int o, a, b;
  cin >> o;
  for (int i = 1; i <= o; i++) {
    cin >> a;
    Online[a] = 1;
  }
  for (int i = 1; i <= m; i++) {
    cin >> a >> b;
    Sasiedzi[a].insert(b);
    Sasiedzi[b].insert(a);
  }
}
void Inicjuj(int n) {
  for (int i = 1; i <= n; i++) {
    for (it = Sasiedzi[i].begin(); it != Sasiedzi[i].end(); it++) {
      if ((int)Sasiedzi[*it].size() >= P)
        DuziSasiedzi[i].insert(*it);
      else if (Online[*it] == 1)
        Suma[i]++;
    }
  }
}
void online(int a) {
  Online[a] = 1;
  if ((int)Sasiedzi[a].size() >= P) return;
  for (it = Sasiedzi[a].begin(); it != Sasiedzi[a].end(); it++) Suma[*it]++;
}
void offline(int a) {
  Online[a] = 0;
  if ((int)Sasiedzi[a].size() >= P) return;
  for (it = Sasiedzi[a].begin(); it != Sasiedzi[a].end(); it++) Suma[*it]--;
}
void add_friend(int a, int b) {
  if ((int)Sasiedzi[a].size() == P - 1) {
    for (it = Sasiedzi[a].begin(); it != Sasiedzi[a].end(); it++) {
      DuziSasiedzi[*it].insert(a);
      Suma[*it] -= Online[a];
    }
  }
  if ((int)Sasiedzi[b].size() == P - 1) {
    for (it = Sasiedzi[b].begin(); it != Sasiedzi[b].end(); it++) {
      DuziSasiedzi[*it].insert(b);
      Suma[*it] -= Online[b];
    }
  }
  Sasiedzi[b].insert(a);
  Sasiedzi[a].insert(b);
  if ((int)Sasiedzi[b].size() >= P) DuziSasiedzi[a].insert(b);
  if ((int)Sasiedzi[a].size() >= P) DuziSasiedzi[b].insert(a);
  if ((int)Sasiedzi[b].size() < P && Online[b]) Suma[a]++;
  if ((int)Sasiedzi[a].size() < P && Online[a]) Suma[b]++;
}
void delete_friend(int a, int b) {
  if ((int)Sasiedzi[a].size() == P) {
    for (it = Sasiedzi[a].begin(); it != Sasiedzi[a].end(); it++) {
      DuziSasiedzi[*it].erase(a);
      Suma[*it] += Online[a];
    }
  }
  if ((int)Sasiedzi[b].size() == P) {
    for (it = Sasiedzi[b].begin(); it != Sasiedzi[b].end(); it++) {
      DuziSasiedzi[*it].erase(b);
      Suma[*it] += Online[b];
    }
  }
  Sasiedzi[b].erase(a);
  Sasiedzi[a].erase(b);
  DuziSasiedzi[b].erase(a);
  DuziSasiedzi[a].erase(b);
  if ((int)Sasiedzi[b].size() < P && Online[b]) Suma[a]--;
  if ((int)Sasiedzi[a].size() < P && Online[a]) Suma[b]--;
}
int count_friends(int a) {
  int wynik = Suma[a];
  for (it = DuziSasiedzi[a].begin(); it != DuziSasiedzi[a].end(); it++)
    wynik += Online[*it];
  return wynik;
}
int main() {
  int n, m, q;
  int a, b;
  char znak;
  WczytajDane(n, m, q);
  Inicjuj(n);
  for (int i = 1; i <= q; i++) {
    cin >> znak;
    if (znak == 'A' || znak == 'D')
      cin >> a >> b;
    else
      cin >> a;
    if (znak == 'O') online(a);
    if (znak == 'F') offline(a);
    if (znak == 'A') add_friend(a, b);
    if (znak == 'D') delete_friend(a, b);
    if (znak == 'C') cout << count_friends(a) << "\n";
  }
  return 0;
}
