#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#define int long long
#define maxn 200005
#define itachi ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define fi first
#define se second
using namespace std;
int n, m;
int c[maxn], d[maxn];
vector<int> adj[maxn];
int col[maxn]; // -1: chưa thăm, 0/1: hai phía
vector<int> comp;
bool ok;
void dfs(int u) {
comp.push_back(u);
for (int v : adj[u]) {
if (col[v] == -1) {
col[v] = col[u] ^ 1;
dfs(v);
} else if (col[v] == col[u]) {
ok = false;
}
}
}
signed main() {
itachi;
cin >> n >> m;
for (int i = 1; i <= n; i++) cin >> c[i];
for (int i = 1; i <= n; i++) cin >> d[i];
for (int i = 1; i <= m; i++) {
int u, v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
memset(col, -1, sizeof(col));
int ans = 0;
for (int i = 1; i <= n; i++) {
if (col[i] != -1) continue;
comp.clear();
ok = true;
col[i] = 0;
dfs(i);
if (!ok) {
cout << -1;
return 0;
}
int cost0 = 0, cost1 = 0;
bool bad0 = false, bad1 = false;
for (int u : comp) {
int orig = c[u] - 1;
int need0 = col[u];
int need1 = col[u] ^ 1;
if (orig != need0) {
if (!d[u]) bad0 = true;
else cost0++;
}
if (orig != need1) {
if (!d[u]) bad1 = true;
else cost1++;
}
}
if (bad0 && bad1) {
cout << -1;
return 0;
} else if (bad0) {
ans += cost1;
} else if (bad1) {
ans += cost0;
} else {
ans += min(cost0, cost1);
}
}
cout << ans;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNwcmFnbWEgR0NDIG9wdGltaXplKCJPMyx1bnJvbGwtbG9vcHMiKQojZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSBtYXhuIDIwMDAwNQojZGVmaW5lIGl0YWNoaSBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7Y291dC50aWUoMCk7CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbiwgbTsKaW50IGNbbWF4bl0sIGRbbWF4bl07CnZlY3RvcjxpbnQ+IGFkalttYXhuXTsKCmludCBjb2xbbWF4bl07IC8vIC0xOiBjaMawYSB0aMSDbSwgMC8xOiBoYWkgcGjDrWEKdmVjdG9yPGludD4gY29tcDsKCmJvb2wgb2s7Cgp2b2lkIGRmcyhpbnQgdSkgewogICAgY29tcC5wdXNoX2JhY2sodSk7CgogICAgZm9yIChpbnQgdiA6IGFkalt1XSkgewogICAgICAgIGlmIChjb2xbdl0gPT0gLTEpIHsKICAgICAgICAgICAgY29sW3ZdID0gY29sW3VdIF4gMTsKICAgICAgICAgICAgZGZzKHYpOwogICAgICAgIH0gZWxzZSBpZiAoY29sW3ZdID09IGNvbFt1XSkgewogICAgICAgICAgICBvayA9IGZhbHNlOwogICAgICAgIH0KICAgIH0KfQoKc2lnbmVkIG1haW4oKSB7CiAgICBpdGFjaGk7CgogICAgY2luID4+IG4gPj4gbTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgY2luID4+IGNbaV07CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGNpbiA+PiBkW2ldOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG07IGkrKykgewogICAgICAgIGludCB1LCB2OwogICAgICAgIGNpbiA+PiB1ID4+IHY7CiAgICAgICAgYWRqW3VdLnB1c2hfYmFjayh2KTsKICAgICAgICBhZGpbdl0ucHVzaF9iYWNrKHUpOwogICAgfQoKICAgIG1lbXNldChjb2wsIC0xLCBzaXplb2YoY29sKSk7CgogICAgaW50IGFucyA9IDA7CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgaWYgKGNvbFtpXSAhPSAtMSkgY29udGludWU7CgogICAgICAgIGNvbXAuY2xlYXIoKTsKICAgICAgICBvayA9IHRydWU7CgogICAgICAgIGNvbFtpXSA9IDA7CiAgICAgICAgZGZzKGkpOwoKICAgICAgICBpZiAoIW9rKSB7CiAgICAgICAgICAgIGNvdXQgPDwgLTE7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgICAgaW50IGNvc3QwID0gMCwgY29zdDEgPSAwOwogICAgICAgIGJvb2wgYmFkMCA9IGZhbHNlLCBiYWQxID0gZmFsc2U7CgogICAgICAgIGZvciAoaW50IHUgOiBjb21wKSB7CiAgICAgICAgICAgIGludCBvcmlnID0gY1t1XSAtIDE7CgogICAgICAgICAgICBpbnQgbmVlZDAgPSBjb2xbdV07CiAgICAgICAgICAgIGludCBuZWVkMSA9IGNvbFt1XSBeIDE7CgogICAgICAgICAgICBpZiAob3JpZyAhPSBuZWVkMCkgewogICAgICAgICAgICAgICAgaWYgKCFkW3VdKSBiYWQwID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGVsc2UgY29zdDArKzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAob3JpZyAhPSBuZWVkMSkgewogICAgICAgICAgICAgICAgaWYgKCFkW3VdKSBiYWQxID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGVsc2UgY29zdDErKzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGJhZDAgJiYgYmFkMSkgewogICAgICAgICAgICBjb3V0IDw8IC0xOwogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9IGVsc2UgaWYgKGJhZDApIHsKICAgICAgICAgICAgYW5zICs9IGNvc3QxOwogICAgICAgIH0gZWxzZSBpZiAoYmFkMSkgewogICAgICAgICAgICBhbnMgKz0gY29zdDA7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYW5zICs9IG1pbihjb3N0MCwgY29zdDEpOwogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8IGFuczsKICAgIHJldHVybiAwOwp9