use strict; use warnings; my (@dirs, %left, %right); while (<>) { chomp; @dirs = split(//) if /^[LR]+$/; next unless /([A-Z]{3}) = \(([A-Z]{3}), ([A-Z]{3})\)/; $left{$1} = $2; $right{$1} = $3; } my ($node, $step) = ("AAA", 0); while ($node ne "ZZZ") { my $dir = $dirs[$step++ % @dirs]; $node = ($dir eq "L" ? $left{$node} : $right{$node}); } print $step, "\n";