Given a list of test result strings, write a function count_message_mismatches(results) that returns the number of failed test cases where the expected error message does not exactly match the actual error message. Each string is formatted as STATUS|expected=<text>|actual=<text>, where STATUS is either PASS or FAIL. Only FAIL entries should be checked; PASS entries are ignored.
1 <= len(results) <= 10^4|-separated parts in the required format|