Choice "A" is correct. Unilateral mistake is a defense to a contract if the nonmistaken party knew or should have known of the mistake. Here, the contractor knew of the error.
Choice "c" is incorrect. Whether the mistake was due to ordinary negligence or gross negligence is irrelevant in determining whether the mistake will constitute a contract defense.
Choice "d" is incorrect. Unilateral mistake is a defense to a contract if the nonmistaken party knew or should have known of the mistake.
Choice "b" is incorrect. While mistake is grounds for a defense only if the mistake is material, materiality is not all that is necessary. When the mistake is unilateral, as it is here, the nonmistaken party must also have known of the mistake (or had cause to know of the mistake).