#include <bits/stdc++.h>
using namespace std;
ofstream file("debug.txt");
template <typename Int>
ostream &operator<<(ostream &s, const vector<Int> &v) {
  s << '[';
  for (auto i = v.begin(); i != v.end(); i++) {
    s << *i;
    if (i != prev(v.end())) s << ", ";
  }
  s << ']';
  return s;
}
template <typename Int, typename INT>
ostream &operator<<(ostream &s, const map<Int, INT> &mp) {
  s << '[';
  for (auto &i : mp) {
    s << '[' << i.first << ", " << i.second << ']';
    if (i != *mp.rbegin()) s << ", ";
  }
  s << ']';
  return s;
}
template <typename Int>
ostream &operator<<(ostream &s, const set<Int> &st) {
  s << '[';
  for (auto &i : st) {
    s << i;
    if (i != *st.rbegin()) s << ", ";
  }
  s << ']';
  s << '\n';
  return s;
}
template <typename Int, typename INt>
ostream &operator<<(ostream &s, const pair<Int, INt> &x) {
  s << '[' << x.first << ", " << x.second << ']';
  return s;
}
template <typename T>
void print(T *x, int n) {
  for (int i = 0; i < n; i++) {
    file << x[i] << " \n"[i == n - 1];
  }
}
template <typename T>
ostream &operator<<(ostream &s, const complex<T> &a) {
  s << '(' << a.real() << ", " << a.imag() << ')';
  return s;
}
template <typename T>
T debug(const T &x, const string &s = "") {
  file << s << " = " << x << '\n' << flush;
  return x;
}
const int dr[]{-1, -1, 0, 1, 1, 1, 0, -1};
const int dc[]{0, 1, 1, 1, 0, -1, -1, -1};
const int N = 2e5 + 10;
int n, m, q, ans;
bool dead[N];
set<int> edg[N];
void add(int u, int v) {
  if (!dead[u]) {
    dead[u] = 1;
    ans--;
  }
  edg[u].insert(v);
}
void rem(int u, int v) {
  if (dead[u] && edg[u].size() == 1) {
    dead[u] = 0;
    ans++;
  }
  edg[u].erase(v);
}
int main() {
  cin.tie(0);
  ios_base::sync_with_stdio(0);
  cin >> n >> m;
  ans = n;
  for (int i = 0, u, v; i < m; i++) {
    cin >> u >> v;
    if (u > v) swap(u, v);
    add(u, v);
  }
  cin >> q;
  while (q--) {
    int t;
    cin >> t;
    if (t < 3) {
      int u, v;
      cin >> u >> v;
      if (u > v) swap(u, v);
      if (t == 1)
        add(u, v);
      else
        rem(u, v);
    } else
      cout << ans << '\n';
  }
}
