Updated problem 27 algorithm