```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)
}
}
```