Python 2, 129 126 119119 104 bytes
def f(n,k,p=0):z=p<1or n>0;q=intn>0;q=-~ord('7367355777e0d93bf0fb'[n%10::10],16'}/lx2Z^o~z'[n%10])*z;return(z and f(n/10,k,q))+k*bin(p^q).count('1')
Thx for a big 15 bytes from ovs.
As specified, takes a non-negative number and a positive sign length, and returns total changes.