For Office 365 users everything is about to change!
The formula = FILTER( location, location<>"-" )
will eliminate the dashes from the row list. Nesting the formula within UNIQUE reduces the list to unique values.
The final step is simply to count the number of terms remaining = COUNTA( UNIQUE( FILTER(location, location<>"-"), TRUE ) )
Basically, each function simply "does what it says on the tin".