use 5.20.0;

use List::AllUtils qw/ sum /;
use File::Serialize;

use experimental 'signatures', 'smartmatch';

my $data = deserialize_file shift;

say add($data);

sub add($data) {
   given ( ref $data ) {
       return sum map { add($_) } @$data when 'ARRAY';
       return ( ( grep { $_ eq 'red' } values %$data ) ? 0 : 1) * sum map { add($_) } values %$data when 'HASH';
       default { return 0 + $data };
   }
}