#include <bits/stdc++.h>   using namespace std;   const int MAXN = 1000005;   const int SQRTN = 1003;   const int LOGN = 22;   const double PI = acos(-1);   const int INF = 1e9;   int MOD = 1000000007;   const int FMOD = 998244353;   const double eps = 1e-9;   long long gcd(long long a, long long b) {     if (a == 0) return (b);     return (gcd(b % a, a));   }   long long lcm(long long a, long long b) { return (a / gcd(a, b) * b); }   void solve() {     long long n, m1;     cin >> n >> m1;     long long x, k, y;     cin >> x >> k >> y;     long long arr[n];     for (int i = 0; i < n; i++) cin >> arr[i];     long long brr[m1];     for (int i = 0; i < m1; i++) cin >> brr[i];     bool flag = false;     long long i = 0, j = 0, m = -1, pos, l = -1, r;     long long result = 0;     while (i < n && j < m1) {       if (flag == true) break;       m = max(m, arr[i]);       if (m == arr[i]) pos = i;       if (arr[i] != brr[j])         i++;       else {         r = i;         i++;         j++;         int len = r - l - 1;         if (pos > l && pos < r && len < k) {           flag = true;           break;         } else {           long long c1, c2;           if (len % k == 0)             c1 = x * (len / k);           else             c1 = x * (len / k) + (len - k * (len / k)) * y;           c2 = y * len;           if (pos > l && pos < r) c2 = y * (len - k) + x;           result += min(c1, c2);         }         l = r;         m = arr[l];       }     }     if (j == m1 && i < n) {       m = arr[i - 1];       pos = i - 1;       l = i - 1;       r = n;       int len = 0;       while (i < n) {         m = max(m, arr[i]);         if (m == arr[i]) pos = i;         i++;         len++;       }       if (pos > l && pos < r && len < k)         flag = true;       else {         long long c1, c2;         if (len % k == 0)           c1 = x * (len / k);         else           c1 = x * (len / k) + (len - k * (len / k)) * y;         c2 = y * len;         if (pos > l && pos < r) c2 = (len - k) * y + x;         result += min(c1, c2);       }     }     if (i == n && j < m1) {       cout << -1 <<   n ;     } else {       if (flag)         cout << -1 <<   n ;       else         cout << result <<   n ;     }   }   int main() {     ios::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     long long t = 1;     while (t--) {       solve();     }     return (0);   }   