I suggest an automatic procedure. If the opponent asks for an undo which is accepted, the software should deny the replacement of the bid if it is not next to the bid replaced. E.g. you could change 2♦ to 2♣ or 2♥ or 1♦ or 3♦, because these bids are neighbouring the initial one. Also, pass could be changed to double (or vice versa) but not to any other bid (it can't be a misclick because it needs two clicks instead of one).
Maybe the software could even tell the culprit that his undo was rejected automatically. A little pedagogical explanation may also be attached, e.g. 'this is no place for cheaters'.

Help
