while true
	e=gets.to_i
	break if e == 0

	a=[]
	(e+1).times{|x|
		(e+1).times{|y|
			z3=e-x-y*y
			break if z3 < 0
			z=(z3 ** (1.0 / 3.0)).round
			z = z*z*z == z3 ? z : -1
			a.push([x,y,z]) if z != -1
		}
	}
	m=1000000*3
	a.each{|e|
		ans = e[0]+e[1]+e[2]
		m = ans < m ? ans : m
	}
	p m
end