Автор задачи: Даниил Орешников, разработчик: Егор Юлин
Будем за $$$|a|$$$ обозначать длину числа $$$a$$$ (не модуль), а за $$$a'$$$ и $$$b'$$$ обозначим $$$a + c$$$ и $$$b + c$$$, соответственно. Рассмотрим сначала случаи, когда ответом будет $$$-1$$$:
- Если $$$a > b$$$, то ответ всегда $$$-1$$$: это достаточно очевидно.
- Если $$$|a| = |b|$$$ и $$$b > a$$$, то есть варианты $$$|a'| = |b'|$$$ и $$$|a'| + 1 = |b'|$$$, рассмотрим их ниже.
- Если после прибавления $$$c$$$ длины равны, то поскольку $$$a' < b'$$$, то и одно не входит в другое как подстрока.
- Если же длины становятся разными, то $$$|a'| + 1 = |b'|$$$, но тогда одно может входить в другое как подстрока, только если $$$b' = 10a' + 1$$$ или если $$$b' = d \cdot 10^{|a'|} + a'$$$. В обоих случаях величина $$$b' - a' = b - a$$$ оказывается заметно большей ($$$> 9a$$$), чем возможно для двух чисел $$$a$$$ и $$$b$$$ одинаковой длины.
Рассмотрим случай когда $$$|a| + 1 = |b|$$$. Есть несколько вариантов. Если $$$a$$$ уже входит как подстрока в $$$b$$$, тогда $$$c = 0$$$ подходит. Иначе:
- Пусть мы хотим найти такое $$$c$$$, что $$$|a + c| = |b + c|$$$. Заметим, что такого подходящего $$$c$$$ быть не может, так как такой случай был разобран выше и для него не существует ответа.
- Тогда должно выполняться $$$|a'| + 1 = |b'|$$$. Рассмотрим случай когда у нас $$$a'$$$ — суффикс $$$b'$$$. Но тогда ответа не существует, так как при $$$b' - a' = b - a = d \cdot 10^{|a'|}$$$ было бы верно, что $$$a$$$ изначально являлся суффиксом $$$b$$$.
- Соответственно, $$$a'$$$ должен быть префиксом $$$b'$$$. Пусть $$$\overline{b} = \left\lfloor\frac{b}{10}\right\rfloor$$$, то есть этот самый префикс $$$b$$$. Покажем, что если $$$\overline{b} > a$$$, то ответ существует. Найдем его конструктивно: возьмем в качестве $$$c$$$ число $$$\overline{b} - a$$$ и добавим его к $$$a$$$ и $$$b$$$. Так как у нас $$$\overline{b}$$$ растет с таким действием на $$$\approx \frac{c}{10}$$$, а $$$a$$$ растет на $$$c$$$, разница $$$\overline{b'} - a'$$$ будет уменьшаться, пока не станет нулем.
Случай, когда $$$|a| + 1 < |b|$$$, решается аналогично случаю, когда $$$\overline{b} > a$$$, но теперь в качестве $$$\overline{b}$$$ берем префикс минимальной длины, для которого $$$a < \overline{b}$$$. Поскольку разница между $$$\overline{b'}$$$ и $$$a'$$$ каждый раз уменьшается примерно в $$$10$$$ раз, достаточно будет $$$\mathcal{O}(\log_{10} a)$$$ шагов.