Align the window, compare right-to-left, and on match or mismatch shift by shift[T[i+m-1]] — the table value of the text char aligned with the pattern's last position. No good-suffix rule.
shift[P[j]] = m-1-j; default m.
O(nm) worst case. See junior.md and professional.md for the proof that this shift never skips a match.