Substring search with Z-algorithm

Write codeMedium25 minGoogle style

Your task

Implement substring search: return the index of the first occurrence of pat in text, or -1 if it does not occur. If pat is empty, return 0. Solve it in linear time using the Z-algorithm on the concatenation pat + sentinel + text (the sentinel must be a character that cannot appear in either input). For example, the first occurrence of "issip" in "mississippi" starts at index 4.

Examples

first_occurrence_z(text: str, pat: str) -> int
Example 1
Inputfirst_occurrence_z("mississippi", "issip")
Output4