working solution to problem 27