Putting elements in allowed bags

Let’s say I have a list of “Items”

I also have a list of “Bags”. Each bag is a set of “Items” which gives what item can be placed in that bag. But only one item can go in each bag.

I want to place all items in a bag. It’s okay if there are empty bags left over.

Does this sort of problem have a name and a solution other than a naive depth first search (a link in the direction of such an approach will be fine)?