完美数
题号:NC212849
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

输入一个数n,通过以下代码可以得到m
int fun(int n)
{
    int m = 0;
    while (n)
    {
        m++;
        n /= 10;
    }
    return m;
}
定义完美数:只包含1和2的数且是m位数(比如n=88,那么为m=2,完美数有且仅有11,12,21,22)
最初,ans=0,你的每一次操作都让ans加上一个完美数,每次操作结束后,ans的每一个数位,都比之前的大,请问至少需要操作多少次,能够让ans与n相等,如果怎么操作都无法让ans与n相等,那么输出-1

输入描述:

输入一个数n
(1<=n<=1e18)

输出描述:

输出最少操作次数
示例1

输入

复制
55

输出

复制
3

说明

选用22、22、11可以相加得到55
示例2

输入

复制
19

输出

复制
-1