这题没什么好解释的
#include<bits/stdc++.h> #define PI acos(-1.0) #define pb push_back #define F first #define S second #define debug puts #define setp cout << fixed << setprecision(15) #define fst ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); using namespace std; typedef long long ll; const int N=5e4+5; const int MOD=998244373; int cnt[100]; int main(void){ ll n; scanf("%lld",&n); string s=to_string(n); for(auto ch:s) cnt[ch-'0']++; int sz=(int)s.size(); if(sz<=2){ if(n==25|| n==50||n==75) printf("0\n"); else if(n==52 || n==57) printf("1\n"); else printf("-1\n"); return 0; } int ans=1e9+9; if(cnt[0]>=2){ string t=s; int te=0; int index; for(int i=sz-1;i>=0;i--){ if(t[i]=='0'){ index=i; break; } } for(int i=index+1;i<=sz-1;i++) swap(t[i],t[i-1]),te++/*,cout <<"i="<<i<<" te="<<te<<endl*/; for(int i=sz-2;i>=0;i--){ if(t[i]=='0'){ index=i; break; } } for(int i=index+1;i<=sz-2;i++) swap(t[i],t[i-1]),te++; ans=min(ans,te); } if(cnt[2]>=1&&cnt[5]>=1){ string t=s; int te=0; int index; for(int i=sz-1;i>=0;i--){ if(t[i]=='5'){ index=i; break; } } for(int i=index+1;i<=sz-1;i++) swap(t[i],t[i-1]),te++/*,cout <<"i="<<i<<" te="<<te<<endl*/; for(int i=sz-2;i>=0;i--){ if(t[i]=='2'){ index=i; break; } } for(int i=index+1;i<=sz-2;i++) swap(t[i],t[i-1]),te++; int cnt=0; for(int i=0;i<sz;i++){ if(t[i]=='0') cnt++; else break; } if(sz-cnt>=3) ans=min(ans,te+cnt); } if(cnt[0]>=1&&cnt[5]>=1){ string t=s; int te=0; int index; for(int i=sz-1;i>=0;i--){ if(t[i]=='0'){ index=i; break; } } for(int i=index+1;i<=sz-1;i++) swap(t[i],t[i-1]),te++/*,cout <<"i="<<i<<" te="<<te<<endl*/; for(int i=sz-2;i>=0;i--){ if(t[i]=='5'){ index=i; break; } } for(int i=index+1;i<=sz-2;i++) swap(t[i],t[i-1]),te++; int cnt=0; for(int i=0;i<sz;i++){ if(t[i]=='0') cnt++; else break; } // cout << t<< endl; // printf("~~~%d\n",te+cnt); if(sz-cnt>=3) ans=min(ans,te+cnt); } if(cnt[5]>=1&&cnt[7]>=1){ string t=s; int te=0; int index; for(int i=sz-1;i>=0;i--){ if(t[i]=='5'){ index=i; break; } } for(int i=index+1;i<=sz-1;i++) swap(t[i],t[i-1]),te++/*,cout <<"i="<<i<<" te="<<te<<endl*/; for(int i=sz-2;i>=0;i--){ if(t[i]=='7'){ index=i; break; } } for(int i=index+1;i<=sz-2;i++) swap(t[i],t[i-1]),te++; int cnt=0; for(int i=0;i<sz;i++){ if(t[i]=='0') cnt++; else break; } if(sz-cnt>=3) ans=min(ans,te+cnt); } if(ans==1e9+9) printf("-1\n"); else printf("%d\n",ans); return 0; }