def _find_list(haystack: list, needle: list) -> int:
    """
    Return the index at which the sequence needle appears in the sequence haystack,
    or -1 if it is not found, using the Boyer-Moore-Horspool algorithm.
    The elements of needle and haystack must be hashable.

    >>> _find_list([10, 10, 20], [10, 20])
    1

    Args:
        haystack:  list to find
        needle:  pattern list
    Returns:
        start index. -1 if not found
    """
    h_len = len(haystack)
    n_len = len(needle)
    skip = {needle[i]: n_len - i - 1 for i in range(n_len - 1)}
    idx = n_len - 1
    while idx < h_len:
        for jdx in range(n_len):
            if haystack[idx - jdx] != needle[-jdx - 1]:
                idx += skip.get(haystack[idx], n_len)
                break
        else:
            return idx - n_len + 1
    return -1