← Home
```go
package main

import (
	"fmt"
	"math"
)

func min(a, b int64) int64 {
	if a < b {
		return a
	}
	return b
}

func main() {
	var nstr string
	fmt.Scan(&nstr)
	l := len(nstr)
	if l == 0 {
		fmt.Println(-1)
		return
	}
	if l == 1 {
		val := int(nstr[0] - '0')
		if val%25 == 0 {
			fmt.Println(0)
		} else {
			fmt.Println(-1)
		}
		return
	}
	// l >=2
	target := []string{"00", "25", "50", "75"}
	minans := int64(math.MaxInt64 / 2)
	for p1 := 1; p1 <= l; p1++ {
		for p2 := 1; p2 <= l; p2++ {
			if p1 == p2 {
				continue
			}
			pr := string(nstr[p1-1]) + string(nstr[p2-1])
			found := false
			for _, t := range target {
				if t == pr {
					found = true
					break
				}
			}
			if !found {
				continue
			}
			if l == 2 && nstr[p1-1] == '0' {
				continue
			}
			// build U
			u := []int{}
			for k := 1; k <= l; k++ {
				if k != p1 && k != p2 {
					u = append(u, k)
				}
			}
			m := len(u)
			ng1 := 0
			ng2 := 0
			for _, v := range u {
				if v > p1 {
					ng1++
				}
				if v > p2 {
					ng2++
				}
			}
			bet := int64(0)
			if p1 > p2 {
				bet = 1
			}
			var locmin int64 = math.MaxInt64 / 2
			if m == 0 {
				locmin = 0
			} else {
				for _, ss := range u {
					if nstr[ss-1] == '0' {
						continue
					}
					cnt := 0
					for _, vv := range u {
						if vv < ss {
							cnt++
						}
					}
					locmin = min(locmin, int64(cnt))
				}
			}
			if locmin == math.MaxInt64/2 {
				continue // no possible
			}
			total := locmin + int64(ng1) + int64(ng2) + bet
			minans = min(minans, total)
		}
	}
	if minans == math.MaxInt64/2 {
		fmt.Println(-1)
	} else {
		fmt.Println(minans)
	}
}
```