import 'dart:io';

void main() {
  List xkd = stdin.readLineSync().split(" ").map((x) => int.parse(x)).toList();
  int x = (xkd[0] < 0) ? -1 * xkd[0] : xkd[0];
  int k = xkd[1];
  int d = xkd[2];

  int ans;
  // ans = 0;
  // if (x == 0) {
  //   if (k % 2 == 0) {
  //     ans = 0;
  //   } else {
  //     ans = d;
  //   }
  // } else if (x >= (k * d)) {
  //   ans = x - (k * d);
  // } else {
  //   int b = (x % d);
  //   int a = (x / d).floor();

  //   if ((k - a) % 2 == 0) {
  //     ans = b;
  //   } else {
  //     ans = d - b;
  //   }
  // }
  if(x >= k * d) {
		ans=(x - k * d);
	} else {
		for (int i = 1; i <= k; i++) {
			if(x <= d * i) {
				if((k - i)%2==0){
				ans=(d * i - x);
				} else {
					ans=(x - d * (i - 1));
				}
				break;
			}
		}
	}

  print(ans);
}