#include <bits/stdc++.h>
const long long INFLL = ~((long long)1 << 63);
const int N = 200000;
int n, m, x, y, k, a[N + 1];
int main() {
  scanf("%d%d%d%d%d", &n, &m, &x, &k, &y);
  for (int i = 0; i < n; ++i) scanf("%d", a + i);
  int pr = -1, v;
  bool ok = true;
  long long ans = 0;
  for (int i = 0, j = 0; j <= m && ok; ++i, ++j) {
    if (j < m)
      scanf("%d", &v);
    else
      v = 0;
    int f = i, mx = 0;
    while (i <= n && a[i] != v) {
      mx = std::max(mx, a[i]);
      ++i;
    }
    if (i == n + 1)
      ok = false;
    else {
      long long cur = INFLL;
      if (i - f >= k)
        cur = std::min(
            (long long)x * ((i - f) / k) + (long long)y * ((i - f) % k),
            x + (long long)y * (i - f - k));
      if (mx < std::max(pr, v)) cur = std::min(cur, (long long)y * (i - f));
      if (cur == INFLL)
        ok = false;
      else
        ans += cur;
      pr = v;
    }
  }
  if (ok)
    printf("%lld\n", ans);
  else
    printf("-1\n");
  return 0;
}
