
# 座標xからk回dだけ移動する
x, times, dist = gets.chomp.split.map(&:to_i)
# 原点からの距離
abst = x.abs
# 原点を通りすぎず最接近するまでの手数
min = abst / dist
# 通り過ぎることができないなら、最大限近づく
if min >= times
  puts abst - times * dist
  # 最接近してから、原点を奇数回またぐ
elsif (times - min).odd?
  puts (min + 1) * dist - abst
  # 最接近してから、原点を偶数回またぐ
else
  puts abst % dist 
end

