This is untested but something like this should work. Essentially you're passing a condition if REQUEST_URI is something like /abc12, control switches to whatever handler you want. It will skip URLs over 5 characters or that include the 'slug' character "-" or an underscore.

%1, the last RewriteCond backreference, will be expanded to the short URL. Put this above your other rules to enforce this first -- with the [L] flag it will stop rewriting URLs and pass control to the app.

This will match any request between one and five characters in length, and will run the following RewriteRule. Anything longer then that will not run the RewriteRule. The REQUEST_URI variable is what the browser passed to the web-server. The same could be handled in a single RewriteRule, but the above allows chaining if you need it.

^/.{1,5}$

^ = Matches the start of the string
/ = Just matches a forward slash
. = Matches any one character that isn't a newline
{1,5} = Informs the regex engine to match the previous character 1-5 times
$ = Matches the end-of-line character

The /.{1,5}$ construct tells the regex engine to match any string of size 1-5 that is immediately followed by the end-of-line character and immediately preceded by the / character.