package main

import (
	"crypto/md5"
	"fmt"
	"io"
	"log"
	"strconv"
)

func main() {
	var readInp string
	for {
		_, err := fmt.Scan(&readInp)
		if err != nil {
			if err != io.EOF {
				log.Fatal(err)
			}
			break
		}
	}
	firstCoin := searchChunk(readInp, 0, 1000000000)
	fmt.Printf("\n%s%d :: %d\n", readInp, firstCoin, firstCoin)
}

func searchChunk(key string, start, end int) int {
	// So we know it's still running
	for i := start; i <= end; i++ {
		coin := key + strconv.Itoa(i)
		coinMd5 := fmt.Sprintf("%x", md5.Sum([]byte(coin)))
		if isCoin(coinMd5, "000000") {
			return i
		}
	}
	return -1
}

func isCoin(s string, moneyMaker string) bool {
	if len(s) < len(moneyMaker) {
		return false
	}
	for i := 0; i < len(moneyMaker); i++ {
		if s[i] != moneyMaker[i] {
			return false
		}
	}
	return true
}