Minimal number of banknotes to pay a bill
Python 2, 87 80 68 bytes

f=lambda x:x&gt;1and min((y%10)**6%305%3+f(y/10*x/y)for y in[x,-x])or x

Try it online!
-7 bytes thanks to @tsh, and -12 bytes thanks to @dingledooper. Thanks to everyone else for their own golf suggestions.
Instead of tearing down the banknotes in the top-down way, this solution builds up the answer from the bottom. Since the number of banknotes needed to pay \$10n\$ is exactly the same as that for \$n\$, we can tear down the banknotes from the one's digit in the following sense:

If the one's digit is 0, remove the 0 and recurse.

Otherwise, consider two ways to fulfill the one's digit:

Alice pays n%10 to Bob, and then Alice pays whatever banknotes are needed to pay floor(n/10) * 10. Recurse with floor(n/10).
Bob pays 10-n%10 to Alice, and then Alice pays whatever banknotes are needed to pay ceil(n/10) * 10. Recurse with ceil(n/10).

Then we can evaluate the two cases and take their minimum.


In the code, an infinite recursion happens if we don't special-case x=1 as well as x=0, because the ceiling of 1/10 is still 1.