#include <bits/stdc++.h>
using namespace std;
const int inf = 1e9;
const long long Inf = 1e18;
const int N = 2e5 + 10;
const int mod = 0;
int gi() {
  int x = 0, o = 1;
  char ch = getchar();
  while ((ch < '0' || ch > '9') && ch != '-') ch = getchar();
  if (ch == '-') o = -1, ch = getchar();
  while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar();
  return x * o;
}
template <typename T>
bool chkmax(T &a, T b) {
  return a < b ? a = b, 1 : 0;
};
template <typename T>
bool chkmin(T &a, T b) {
  return a > b ? a = b, 1 : 0;
};
int add(int a, int b) { return a + b >= mod ? a + b - mod : a + b; }
int sub(int a, int b) { return a - b < 0 ? a - b + mod : a - b; }
void inc(int &a, int b) { a = (a + b >= mod ? a + b - mod : a + b); }
void dec(int &a, int b) { a = (a - b < 0 ? a - b + mod : a - b); }
int n, m, q, a[N], b[N], c[N], d[N], tot = 0, zero = 0, sz, blo, bel[N], st[N],
                                     ed[N], _ed[N], pos[N], tag[N],
                                     cnt[450][1 << 14];
vector<int> v[N];
char op[5];
void print() {
  if (zero == m) {
    int ans = n;
    for (int i = 1; i <= blo; i++) ans -= cnt[i][tag[i]];
    printf("%d\n", ans);
  } else
    puts("-1");
}
void modify(int p, int v) {
  int l = pos[p], r = _ed[p % m], x = bel[l], y = bel[r];
  if (d[r] == tag[y]) --zero;
  if (x == y) {
    for (int i = l; i <= r; i++) --cnt[x][d[i]], d[i] ^= v, ++cnt[x][d[i]];
  } else {
    for (int i = l; i <= ed[x]; i++) --cnt[x][d[i]], d[i] ^= v, ++cnt[x][d[i]];
    for (int i = x + 1; i < y; i++) tag[i] ^= v;
    for (int i = st[y]; i <= r; i++) --cnt[y][d[i]], d[i] ^= v, ++cnt[y][d[i]];
  }
  if (d[r] == tag[y]) ++zero;
}
int main() {
  n = gi(), m = gi(), q = gi();
  for (int i = 1; i <= n; i++) a[i] = gi();
  for (int i = 1; i <= n; i++) b[i] = gi();
  ++n;
  for (int i = 1; i <= n; i++) c[i] = a[i] ^ b[i] ^ a[i - 1] ^ b[i - 1];
  for (int i = 1; i <= n; i++) v[i % m].push_back(i);
  for (int i = 0; i < m; i++) {
    int sum = 0;
    for (int j : v[i]) sum ^= c[j], d[++tot] = sum, pos[j] = tot;
    if (!sum) ++zero;
    _ed[i] = tot;
  }
  sz = sqrt(n);
  for (int i = 1; i <= n; i++) bel[i] = (i - 1) / sz + 1, ++cnt[bel[i]][d[i]];
  blo = bel[n];
  for (int i = 1; i <= blo; i++) st[i] = ed[i - 1] + 1, ed[i] = i * sz;
  ed[blo] = n;
  print();
  while (q--) {
    scanf("%s", op + 1);
    int p = gi(), v = gi();
    if (op[1] == 'a')
      v ^= a[p], a[p] ^= v;
    else
      v ^= b[p], b[p] ^= v;
    modify(p, v), modify(p + 1, v);
    print();
  }
  return 0;
}
