Counterpoint Solver