C. Marius has the right of it. Step-by-step:
Create three fields, Check1, Check2, Check3. Set each to True/False type. Default them to 0 (or FALSE, but be consistent about using 0/1 versus TRUE/FALSE). Create a fourth field, TotalChecked, set to Whole Number/Integer.
Set rules on Check1, Check2, and Check3 in the following manner:
Name: Add
When: Check1 = 1
Action: TotalChecked = TotalChecked+1
(Stop Executing When This Rule Finishes is optional but good practice to preserve performance)
Name: Subtract
When: Check1 = 0
Action: TotalChecked = TotalChecked-1
Do the same for Check2 and Check3.
Set conditional formatting on each checkbox:
If TotalChecked is greater than or equal to 2 AND
Check1 = 0
Disable this Control
Do the same for Check2 and Check3.
You should now have an illustration of the functionality you're asking for. Tailor it to suit your needs. Duplicate the checkboxes until you have 35 of them, and then change their bindings to your actual variables, and then remove Check1/Check2/Check3 from your data set. This will preserve the rules and conditional formatting, saving you an enormous amount of type.
Just make sure that if you do this (dupe checkboxes and rebind) that you use the correct 0&1/TRUE&FALSE combination that the rest of your form logic uses.