You are given a list of warehouses, each with a set of products in stock and their per-unit shipping cost to a customer. You are also given a customer order that lists products and the quantity needed for each. Your task is to compute the minimum total shipping cost to fulfill the order by sourcing units from any combination of warehouses. You may split a product’s required quantity across multiple warehouses. If the total available stock across all warehouses for any product is less than the required quantity, return -1. Implement the function int calculateMinimumShippingCost(List<Warehouse> warehouses, Order order) where Warehouse contains a map from product name to (stock, cost per unit) and Order is a map from product name to required quantity.