cs50 problem set solution