#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 50, M = 450;
int n, m, k, a[N], b[N], c[N];
struct lll {
  int c, x, v;
};
vector<lll> G[N];
int ALL, q[N], T[M], d[N];
int dt[N], dr[N], Ans, bin[M][1 << 14];
int blk[N], L[M], R[M];
int main() {
  cin >> n >> k >> m;
  for (int i = 0; i < n; i++) scanf("%d", &a[i]);
  for (int i = 0; i < n; i++) scanf("%d", &b[i]);
  for (int i = 0; i <= n; i++) c[i] = a[i] ^ b[i];
  for (int i = n; i; i--) c[i] ^= c[i - 1];
  for (int i = 1, x, v, z; i <= m; i++) {
    char c[3];
    scanf("%s%d%d", c, &x, &v);
    --x;
    if (c[0] == 'a') z = a[x] ^ v, a[x] = v;
    if (c[0] == 'b') z = b[x] ^ v, b[x] = v;
    q[i] = x;
    G[x % k].push_back((lll){i, x / k + 1, z});
    ++x;
    G[x % k].push_back((lll){i, x / k + 1, z});
  }
  for (int t = 0; t < k; t++) {
    int m = 0;
    for (int z = t; z <= n; z += k) d[++m] = c[z];
    for (int i = 1; i <= m; i++) d[i] ^= d[i - 1];
    int E = d[m] == 0;
    ALL += E;
    int ct = 0;
    for (int i = 1; i <= m; i++) ct += d[i] == 0;
    Ans += m - ct;
    int S = sqrt(m), num = 0;
    for (int i = 1; i <= m; i++) blk[i] = (i - 1) / S + 1;
    for (int i = 1; i <= m; i += S) L[++num] = i, R[num] = i + S - 1;
    R[num] = m;
    for (int i = 1; i <= m; i++) ++bin[blk[i]][d[i]];
    for (lll z : G[t]) {
      int p = z.x, r = blk[p];
      for (int i = p; i <= R[r]; i++)
        --bin[r][d[i]], d[i] ^= z.v, ++bin[r][d[i]];
      for (int i = r + 1; i <= num; i++) T[i] ^= z.v;
      int _ct = 0;
      for (int i = 1; i <= num; i++) _ct += bin[i][T[i]];
      dt[z.c] += ct - _ct;
      ct = _ct;
      int _E = (d[m] ^ T[num]) == 0;
      dr[z.c] += _E - E;
      E = _E;
    }
    for (int i = 1; i <= m; i++) --bin[blk[i]][d[i]], T[blk[i]] = 0;
  }
  if (ALL < k)
    puts("-1");
  else
    cout << Ans << '\n';
  for (int i = 1; i <= m; i++) {
    Ans += dt[i];
    ALL += dr[i];
    if (ALL < k)
      puts("-1");
    else
      cout << Ans << '\n';
  }
  return 0;
}
