use strict; use warnings; my (@gs, @xp, @yp); my ($x, $y) = (0, 0); while (<>) { chomp; $x = 0; for (split //) { if ($_ eq "#") { push @gs, [ $x, $y ]; $xp[$x] = 1; $yp[$y] = 1; } $x++; } $y++; } my ($w, $h) = ($x, $y); for ($x = 0; $x < $w; ++$x) { next if defined $xp[$x]; splice @xp, $x, 0, undef; for (@gs) { $_->[0]++ if $_->[0] > $x; } $x++; $w++; } for ($y = 0; $y < $h; ++$y) { next if defined $yp[$y]; splice @yp, $y, 0, undef; for (@gs) { $_->[1]++ if $_->[1] > $y; } $y++; $h++; } my $sum = 0; while (@gs) { my $a = shift @gs; for my $b (@gs) { $sum += abs($a->[0] - $b->[0]) + abs($a->[1] - $b->[1]); } } print $sum, "\n";