def shop_from_grocery_list(budget, grocery_list, *products_and_prices):
bought_products = []
for product, price in products_and_prices:
if product not in grocery_list:
continue
if budget - float(price) < 0:
break
else:
bought_products.append(product)
grocery_list.remove(product)
budget -= float(price)
if not grocery_list:
return f"Shopping is successful. Remaining budget: {budget:.2f}."
else:
return f"You did not buy all the products. Missing products: {', '.join(grocery_list)}."