CF988E Divisibility by 25

题目描述

给定一个整数 $n$,其范围为 $1$ 到 $10^{18}$,且没有前导零。 每次操作,你可以交换该数中任意两个相邻的数字,前提是交换后所得的数字不能有前导零。也就是说,每次操作后,得到的数字的首位不能是 $0$。 你需要求出最少需要多少次操作,才能将该数变为一个能被 $25$ 整除的数。如果无法通过上述操作得到一个能被 $25$ 整除的数,则输出 $-1$。

输入格式

第一行包含一个整数 $n$($1 \le n \le 10^{18}$)。保证 $n$ 的首位不是 $0$。

输出格式

如果无法通过操作得到一个能被 $25$ 整除的数,输出 $-1$。否则,输出最少需要的操作次数。 注意,你只能交换相邻的数字。

说明/提示

在第一个样例中,一种可能的操作序列为 $5071 \rightarrow 5701 \rightarrow 7501 \rightarrow 7510 \rightarrow 7150$。 由 ChatGPT 4.1 翻译