func_code_string: #include <bits/stdc++.h>   using namespace std;   int main() {     long long n, m, x, y, k;     cin >> n >> m;     long long a[n], b[m];     cin >> x >> k >> y;     for (long long i = 0; i < n; i++) cin >> a[i];     for (long long i = 0; i < m; i++) cin >> b[i];     vector<long long> adj[n];     long long z[n];     long long ind = 0;     for (long long i = 0; i < n; i++) {       if (ind >= m) {         adj[ind].push_back(a[i]);         continue;       }       if (b[ind] == a[i]) {         if (ind - 1 >= 0)           z[ind] = max(b[ind], b[ind - 1]);         else           z[ind] = b[ind];         ind++;       } else         adj[ind].push_back(a[i]);     }     if (ind < m - 1) {       cout <<  -1 n ;       return 0;     }     z[ind] = b[m - 1];     ind = 0;     long long ans = 0;     int f = 0;     for (auto &it : adj) {       long long itl = it.size();       if (itl == 0) {         ind++;         continue;       }       long long mxv = -1;       for (auto &it2 : it) mxv = max(mxv, it2);       if (itl < k) {         if (mxv < z[ind])           ans += itl * y;         else {           f = 1;           break;         }       } else {         if (x >= y * k) {           if (mxv < z[ind])             ans += itl * y;           else {             ans = ans + (itl - k) * y + x;           }         } else {           ans += (itl / k) * x + (itl % k) * y;         }       }       ind++;     }     if (f == 1)       cout <<  -1 n ;     else       cout << ans <<   n ;     return 0;   }   