#!/usr/bin/perl -w

use strict;

my %graph;
my $count = 0;

while (<>) {
	my ($bag, $rest) = /\A(.*) bags? contain (.*)./;
	if ($rest eq 'no other bags') {
		# $graph{$bag} = []; # ale neprojevi se
	} else {
		for my $contain (split /, /, $rest) {
			my ($count, $color) = ($contain =~ /\A(\d+) (.*) bag/);
			print "\t$count\t$color.\n";
			push @{ $graph{$color} }, $bag;
		}
	}
}

my %seen = ('shiny gold' => 1);
my @todo = 'shiny gold';

while (my $color = shift @todo) {
	for my $next (@{ $graph{$color} }) {
		next if $seen{ $next };
		unshift @todo, $next;
		$seen{ $next } = 1;
	}
}

print "Seen ", keys(%seen)-1, " nodes\n";
