Capitilize Two Word in One Field

I am trying to figure the correct syntax for a consistent name concatenation. I have two fields, First Name, and Last Name. I have used the following formula to capitalize the first letter:

UPPER(LEFT({First Name}))&LOWER(MID({First Name},2,LEN({First Name}))) & " " & UPPER(LEFT({Last Name}))&LOWER(MID({Last Name},2,LEN({Last Name})))

Which works great… Unless the last Name is TWO Names:

First: “mary” Last: “sue beth” Becomes “Mary Sue beth”

I need a way to check for two names and capitalize both, and also take account that some people may use a “-” between names. The goal is a formula that makes:

“Mary Sue Beth”