#include <bits/stdc++.h>
using namespace std;
const int N = 200005;
int n, k, q, a[N], b[N], c[N], d[N], kuai, bel[N], ed[N], edkuai[N], xr[N],
    f[1 << 10][1 << 14], tr, ans, sum0;
int main() {
  scanf("%d%d%d", &n, &k, &q);
  for (int i = 1; i <= n; i++) scanf("%d", a + i);
  for (int i = 1; i <= n; i++) scanf("%d", b + i);
  for (int i = 1; i <= n; i++) c[i] = (a[i] ^ b[i]) ^ (a[i - 1] ^ b[i - 1]);
  if (k >= 1024) {
    for (int i = 1; i <= k; i++) {
      int j;
      for (j = i; j <= n; j += k) {
        d[j] = c[j];
        if (j > k) d[j] ^= d[j - k];
        ans += !d[j];
      }
      ed[i] = j - k;
      if (j == n + 1) tr = i;
    }
    for (int i = 1; i <= k; i++)
      if (i ^ tr && d[ed[i]]) ++sum0;
    while (1) {
      if (!sum0)
        printf("%d\n", n - ans);
      else
        printf("-1\n");
      if (--q < 0) break;
      int x, y;
      char opt[3];
      scanf("%s%d%d", opt, &x, &y);
      int t;
      if (*opt == 'a') {
        t = a[x] ^ y;
        a[x] = y;
      } else {
        t = b[x] ^ y;
        b[x] = y;
      }
      int r;
      r = (x - 1) % k + 1;
      if (r ^ tr && d[ed[r]]) --sum0;
      for (int i = x; i <= n; i += k) {
        ans -= !d[i];
        d[i] ^= t;
        ans += !d[i];
      }
      if (r ^ tr && d[ed[r]]) ++sum0;
      if (x == n) continue;
      ++x;
      r = (x - 1) % k + 1;
      if (r ^ tr && d[ed[r]]) --sum0;
      for (int i = x; i <= n; i += k) {
        ans -= !d[i];
        d[i] ^= t;
        ans += !d[i];
      }
      if (r ^ tr && d[ed[r]]) ++sum0;
    }
  } else {
    int sz = int(sqrt(n));
    for (int i = 1; i <= k; i++) {
      int now = i;
      while (now <= n) {
        ++kuai;
        for (int j = 1; j <= sz && now <= n; j++, now += k) {
          bel[now] = kuai;
          d[now] = c[now];
          if (now > k) d[now] = c[now] ^ d[now - k];
          ++f[kuai][d[now]];
        }
      }
      edkuai[i] = kuai;
      ed[i] = now - k;
      if (now == n + 1) tr = i;
    }
    for (int i = 1; i <= k; i++)
      if (i ^ tr && d[ed[i]] ^ xr[edkuai[i]]) sum0++;
    for (int i = 1; i <= kuai; i++) ans += f[i][xr[i]];
    while (1) {
      if (!sum0)
        printf("%d\n", n - ans);
      else
        printf("-1\n");
      if (--q < 0) break;
      int x, y;
      char opt[3];
      scanf("%s%d%d", opt, &x, &y);
      int t;
      if (*opt == 'a') {
        t = a[x] ^ y;
        a[x] = y;
      } else {
        t = b[x] ^ y;
        b[x] = y;
      }
      int r, o;
      r = (x - 1) % k + 1;
      if (r ^ tr && d[ed[r]] ^ xr[edkuai[r]]) --sum0;
      o = bel[x];
      for (int i = o + 1; i <= edkuai[r]; i++) {
        ans -= f[i][xr[i]];
        xr[i] ^= t;
        ans += f[i][xr[i]];
      }
      ans -= f[o][xr[o]];
      for (int i = x; i <= n && bel[i] == o; i += k) {
        --f[o][d[i]];
        d[i] ^= t;
        ++f[o][d[i]];
      }
      ans += f[o][xr[o]];
      if (r ^ tr && d[ed[r]] ^ xr[edkuai[r]]) ++sum0;
      if (x == n) continue;
      ++x;
      r = (x - 1) % k + 1;
      if (r ^ tr && d[ed[r]] ^ xr[edkuai[r]]) --sum0;
      o = bel[x];
      for (int i = o + 1; i <= edkuai[r]; i++) {
        ans -= f[i][xr[i]];
        xr[i] ^= t;
        ans += f[i][xr[i]];
      }
      ans -= f[o][xr[o]];
      for (int i = x; i <= n && bel[i] == o; i += k) {
        --f[o][d[i]];
        d[i] ^= t;
        ++f[o][d[i]];
      }
      ans += f[o][xr[o]];
      if (r ^ tr && d[ed[r]] ^ xr[edkuai[r]]) ++sum0;
    }
  }
  return 0;
}
