Solving Second Order Difference Equations