Welcome to WebmasterWorld [webmasterworld.com]!
Yes, certainly, you can fix the problem. The trick is to handle the three-variable URL version first, redirecting it to the appropriate two-variable URL. This is then followed by a rule that will handle the two-variable version if the first rule does not find three variables.
The $1, $2, and $3 variables in the substitution (the stuff on the right side) of the rule back-reference (contain the matched value of) the parenthesized sub-pattterns in the pattern (the stuff on the left side) of the rule, in order, 1 through 9.
So, in your first rule, match all three variables, but leave out $2 on the right side. This has the effect of requiring it to be there in the requested URL, but "throwing it away" once it it found.
If the request is for three variables, this first rule should remove the redundant one and do an external (301 permanent) redirect, and no more rewriting will be needed for this HTTP request; The client will issue a new request using the two-variable URL you provided.
If the request contains only two variables, the pattern in this first rule will not match, so the rule won't be invoked. Therefore, you need to provide a second rule to handle the two-variable requests. This second rule should be an internal rewrite only (like the code you posted), and not a redirect.
In accordance with our charter [webmasterworld.com], we encourage you to learn about mod_rewrite, and to post your "best effort" code here if you have problems and need help.
Apache mod_rewrite documentation [httpd.apache.org]
Apache URL Rewriting Guide [httpd.apache.org]
Regular Expressions tutorial [etext.lib.virginia.edu]