Prior research has shown that Parsons problems are an engaging type of code completion problem that can be used to teach syntactic and semantic language constructs. They can also be used in summative assessments to reduce marking time and grading variability compared to code writing problems. In a Parsons problem the correct code is provided, but is broken into mixed-up code blocks that must be assembled in the correct order. Two-dimensional Parsons problems also require the code blocks to be indented correctly. Parsons problems can contain extra code blocks, called distractors, which are not needed in a correct solution. We present a study that compared the efficiency, effectiveness, and cognitive load of learning from solving two-dimensional Parsons problems with distractors, versus fixing code with the same errors as the distractors, versus writing the equivalent code. We found that solving two-dimensional Parsons problems with distractors took significantly less time than fixing code with errors or than writing the equivalent code. Additionally, there was no statistically significant difference in the learning performance, or in student retention of the knowledge one week later.