Given an array of strings `patterns` and a string `word`, return _the **number** of strings in_ `patterns` _that exist as a **substring** in_ `word`.

A **substring** is a contiguous sequence of characters within a string.

**Example 1:**

**Input:** patterns = \[ "a ", "abc ", "bc ", "d "\], word =  "abc "
**Output:** 3
**Explanation:**
-  "a " appears as a substring in  "abc ".
-  "abc " appears as a substring in  "abc ".
-  "bc " appears as a substring in  "abc ".
-  "d " does not appear as a substring in  "abc ".
3 of the strings in patterns appear as a substring in word.

**Example 2:**

**Input:** patterns = \[ "a ", "b ", "c "\], word =  "aaaaabbbbb "
**Output:** 2
**Explanation:**
-  "a " appears as a substring in  "aaaaabbbbb ".
-  "b " appears as a substring in  "aaaaabbbbb ".
-  "c " does not appear as a substring in  "aaaaabbbbb ".
2 of the strings in patterns appear as a substring in word.

**Example 3:**

**Input:** patterns = \[ "a ", "a ", "a "\], word =  "ab "
**Output:** 3
**Explanation:** Each of the patterns appears as a substring in word  "ab ".

**Constraints:**

*   `1 <= patterns.length <= 100`
*   `1 <= patterns[i].length <= 100`
*   `1 <= word.length <= 100`
*   `patterns[i]` and `word` consist of lowercase English letters.


def longest_beautiful_substring(word: str) -> int:
    if len(word) < 5:
        return 0

    max_length = current_length = 1
    current_vowels = word[0]

    for i in range(1, len(word)):
        if word[i] >= current_vowels[-1] and word[i] not in current_vowels:
            current_vowels += word[i]
        elif word[i] == current_vowels[-1]:
            pass
        else:
            current_vowels = word[i]
            current_length = 0

        current_length += 1

        if current_vowels == "aeiou":
            max_length = max(max_length, current_length)

    return max_length
