import logging
from typing import List, Any

# Configure logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')


def find_serendipitous_connections(list1: List[Any], list2: List[Any]) -> List[Any]:
    """
    Finds common elements (serendipitous connections) between two lists.

    Args:
        list1: The first list.
        list2: The second list.

    Returns:
        A list of common elements between the two lists.
        Returns an empty list if either input is not a list.
    """
    if not isinstance(list1, list) or not isinstance(list2, list):
        logging.error("Invalid input: Both inputs must be lists.")
        return []

    common_elements = list(set(list1) & set(list2))
    return common_elements


if __name__ == '__main__':
    # Example usage:
    list_a = [1, 2, 3, 4, 5]
    list_b = [3, 5, 6, 7, 8]

    connections = find_serendipitous_connections(list_a, list_b)

    if connections:
        print(f"Serendipitous connections found: {connections}")
    else:
        print("No serendipitous connections found.")

    # Example with invalid input
    list_c = "not a list"
    list_d = [1, 2, 3]
    connections = find_serendipitous_connections(list_c, list_d)
    if connections:
        print(f"Serendipitous connections found: {connections}")
    else:
        print("No serendipitous connections found (or invalid input).")