#include<stdio.h>
#include<deque>
using namespace std;
int dist[121][121];
deque<int>qx, qy;
int X, Y;
void push(int x, int y,int bx,int by) {
if (y > Y)x += y - Y, y = Y;
if (x > X)y += x - X, x = X;
if (dist[x][y])return;
qx.push_back(x); qy.push_back(y);
dist[x][y] = dist[bx][by] + 1;
}
int jd(int x) { if (x < 0)return -x; return x; }
int main() {
int k, m;
scanf("%d%d%d%d", &X, &Y, &k, &m);
qx.push_back(0);qy.push_back(0);
dist[0][0] = 1;
while (!qx.empty()) {
int x = qx.front(); qx.pop_front();
int y = qy.front(); qy.pop_front();
push(x, 0, x, y), push(0, y, x, y);
push(0, x + y, x, y), push(x + y, 0, x, y);
push(x, Y, x, y), push(X, y, x, y);
}
int ans = 1e9;
for (int i = 0; i <= X; i++) for (int j = 0; j <= Y; j++) {
if (dist[i][j] && dist[i][j] <= k + 1 && ans > jd(m - (i + j)))ans = jd(m - (i + j));
}
printf("%d", ans);
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8ZGVxdWU+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGRpc3RbMTIxXVsxMjFdOwpkZXF1ZTxpbnQ+cXgsIHF5OwppbnQgWCwgWTsKdm9pZCBwdXNoKGludCB4LCBpbnQgeSxpbnQgYngsaW50IGJ5KSB7CglpZiAoeSA+IFkpeCArPSB5IC0gWSwgeSA9IFk7CglpZiAoeCA+IFgpeSArPSB4IC0gWCwgeCA9IFg7CglpZiAoZGlzdFt4XVt5XSlyZXR1cm47CglxeC5wdXNoX2JhY2soeCk7IHF5LnB1c2hfYmFjayh5KTsKCWRpc3RbeF1beV0gPSBkaXN0W2J4XVtieV0gKyAxOwp9CmludCBqZChpbnQgeCkgeyBpZiAoeCA8IDApcmV0dXJuIC14OyByZXR1cm4geDsgfQppbnQgbWFpbigpIHsKCWludCBrLCBtOwoJc2NhbmYoIiVkJWQlZCVkIiwgJlgsICZZLCAmaywgJm0pOwoJcXgucHVzaF9iYWNrKDApO3F5LnB1c2hfYmFjaygwKTsKCWRpc3RbMF1bMF0gPSAxOwoJd2hpbGUgKCFxeC5lbXB0eSgpKSB7CgkJaW50IHggPSBxeC5mcm9udCgpOyBxeC5wb3BfZnJvbnQoKTsKCQlpbnQgeSA9IHF5LmZyb250KCk7IHF5LnBvcF9mcm9udCgpOwoJCXB1c2goeCwgMCwgeCwgeSksIHB1c2goMCwgeSwgeCwgeSk7CgkJcHVzaCgwLCB4ICsgeSwgeCwgeSksIHB1c2goeCArIHksIDAsIHgsIHkpOwoJCXB1c2goeCwgWSwgeCwgeSksIHB1c2goWCwgeSwgeCwgeSk7Cgl9CglpbnQgYW5zID0gMWU5OwoJZm9yIChpbnQgaSA9IDA7IGkgPD0gWDsgaSsrKSBmb3IgKGludCBqID0gMDsgaiA8PSBZOyBqKyspIHsKCQlpZiAoZGlzdFtpXVtqXSAmJiBkaXN0W2ldW2pdIDw9IGsgKyAxICYmIGFucyA+IGpkKG0gLSAoaSArIGopKSlhbnMgPSBqZChtIC0gKGkgKyBqKSk7Cgl9CglwcmludGYoIiVkIiwgYW5zKTsKCXJldHVybiAwOwp9