package part2;


use 5.20.0;
use warnings;

use experimental qw/
    signatures
    postderef
/;

require './part1.pm';

sub contains($name, $bags) {
    my $contained = 0;

    while( my( $name, $qty ) = each $bags->{$name}->%* ) {
        $contained += $qty * ( 1+ contains($name, $bags));
    }

    return $contained;
}


sub solution(@lines) {
    my %bags = map { part1::parse_line($_) } @lines;

    return contains('shiny gold', \%bags );
}