Given a sorted list of lowercase strings items and a lowercase query string query, return all items that start with query. The result must preserve the original sorted order. Implement the search efficiently without scanning the entire list unless necessary.
Example 1:
Input: items = ["apple", "application", "banana", "band", "bandana"], query = "app"
Output: ["apple", "application"]
Explanation: Both returned strings begin with "app".
Example 2:
Input: items = ["car", "card", "care", "dog"], query = "cat"
Output: []
Explanation: No string in the list starts with "cat".
1 <= len(items) <= 10^50 <= len(query) <= 1000 <= len(items[i]) <= 100items is sorted in non-decreasing lexicographic order