#include <bits/stdc++.h>
using namespace std;
void RD(int &x) { scanf("%d", &x); }
void RD(long long &x) { scanf("%I64d", &x); }
void RD(double &x) { scanf("%lf", &x); }
void RD(int &x, int &y) { scanf("%d%d", &x, &y); }
void RD(long long &x, long long &y) { scanf("%I64d%I64d", &x, &y); }
void RD(double &x, double &y) { scanf("%lf%lf", &x, &y); }
void RD(char *s) { scanf("%s", s); }
void RD(char &s) { scanf("%c", &s); }
void RD(string &s) { cin >> s; }
void PR(int x) { printf("%d\n", x); }
void PR(int x, int y) { printf("%d %d\n", x, y); }
void PR(long long x) { printf("%I64d\n", x); }
void PR(char x) { printf("%c\n", x); }
void PR(char *x) { printf("%s\n", x); }
void PR(string x) { cout << x << endl; }
const long long inf = 1;
const long long mod = 1LL;
int dp[10100];
int c, d, n, m, k;
int solve(int val) {
  if (val <= 0) return 0;
  int &ret = dp[val];
  if (~ret) return dp[val];
  ret = c + solve(val - n);
  ret = min(ret, d + solve(val - 1));
  return ret;
}
int main() {
  while (scanf("%d", &c) == 1) {
    RD(d, n);
    RD(m, k);
    memset(dp, -1, sizeof(dp));
    PR(solve(n * m - k));
  }
  return 0;
}
