use 5.20.0;

my %directions = (
    'v' => [ 0, 1 ],
    '^' => [ 0, -1 ],
    '<' => [ 1, 0 ],
    '>' => [ -1, 0 ],
);

my @last = ([0,0],[0,0]);
my @positions = (
    [0,0],
    map { 
        my $last = shift @last;
        my @this = ( $last->[0] + $_->[0], $last->[1] + $_->[1] );
        push @last, \@this;
        \@this;
    }
    map { $directions{$_} }  split '', <> );

use List::AllUtils qw/ uniq /;
@positions = uniq map { join ':', @$_ } @positions;
say scalar @positions;