import 'dart:io';

void main() {
  List xkd = stdin.readLineSync().split(" ").map((x) => int.parse(x)).toList();

  int x = (xkd[0]).abs();
  int k = xkd[1];
  int d = xkd[2];

  // int ans;
  // if (x == 0) {
  //   ans = (k % 2 == 0) ? 0 : d;
  // } else 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;
  //     }
  //   }
  // }
  int ans;
  if (x == 0) {
    if (d % 2 == 0) {
      ans = 0;
    } else {
      ans = k;
    }
  } else if (x > k * d) {
    ans = x - k * d;
  } else {
    var a = (x / d).floor();
    var b = x % d;
    if ((k - a) % 2 == 0) {
      ans = b;
    } else {
      ans = d - b;
    }
  }

  print(ans);
}