This rope bridge creaks as you walk along it. You aren't sure how old it is, or whether it can even support your weight.

It seems to support the Elves just fine, though. The bridge spans a gorge which was carved out by the massive river far below you.

You step carefully; as you do, the ropes stretch and twist. You decide to distract yourself by modeling rope physics; maybe you can even figure out where not to step.

Consider a rope with a knot at each end; these knots mark the head and the tail of the rope. If the head moves far enough away from the tail, the tail is pulled toward the head.

Due to nebulous reasoning involving Planck lengths, you should be able to model the positions of the knots on a two-dimensional grid. Then, by following a hypothetical series of motions (your puzzle input) for the head, you can determine how the tail will move.

Due to the aforementioned Planck lengths, the rope must be quite short; in fact, the head (H) and tail (T) must always be touching (diagonally adjacent and even overlapping both count as touching):

....
.TH.
....

....
.H..
..T.
....

...
.H. (H covers T)
...
If the head is ever two steps directly up, down, left, or right from the tail, the tail must also move one step in that direction so it remains close enough:

..... ..... .....
.TH.. -> .T.H. -> ..TH.
..... ..... .....

... ... ...
.T. .T. ...
.H. -> ... -> .T.
... .H. .H.
... ... ...
Otherwise, if the head and tail aren't touching and aren't in the same row or column, the tail always moves one step diagonally to keep up:

..... ..... .....
..... ..H.. ..H..
..H.. -> ..... -> ..T..
.T... .T... .....
..... ..... .....

..... ..... .....
..... ..... .....
..H.. -> ...H. -> ..TH.
.T... .T... .....
..... ..... .....
You just need to work out where the tail goes as the head follows a series of motions. Assume the head and the tail both start at the same position, overlapping.

For example:

R 4
U 4
L 3
D 1
R 4
D 1
L 5
R 2
This series of motions moves the head right four steps, then up four steps, then left three steps, then down one step, and so on. After each step, you'll need to update the position of the tail if the step means the head is no longer adjacent to the tail. Visually, these motions occur as follows (s marks the starting position as a reference point):

== Initial State ==

......
......
......
......
H..... (H covers T, s)

== R 4 ==

......
......
......
......
TH.... (T covers s)

......
......
......
......
sTH...

......
......
......
......
s.TH..

......
......
......
......
s..TH.

== U 4 ==

......
......
......
....H.
s..T..

......
......
....H.
....T.
s.....

......
....H.
....T.
......
s.....

....H.
....T.
......
......
s.....

== L 3 ==

...H..
....T.
......
......
s.....

..HT..
......
......
......
s.....

.HT...
......
......
......
s.....

== D 1 ==

..T...
.H....
......
......
s.....

== R 4 ==

..T...
..H...
......
......
s.....

..T...
...H..
......
......
s.....

......
...TH.
......
......
s.....

......
....TH
......
......
s.....

== D 1 ==

......
....T.
.....H
......
s.....

== L 5 ==

......
....T.
....H.
......
s.....

......
....T.
...H..
......
s.....

......
......
..HT..
......
s.....

......
......
.HT...
......
s.....

......
......
HT....
......
s.....

== R 2 ==

......
......
.H.... (H covers T)
......
s.....

......
......
.TH...
......
s.....
After simulating the rope, you can count up all of the positions the tail visited at least once. In this diagram, s again marks the starting position (which the tail also visited) and # marks other positions the tail visited:

..##..
...##.
.####.
....#.
s###..
So, there are 13 positions the tail visited at least once.

Given a hypothetical series of motions, write a function in Rust to calculate how many positions the tail of the rope visits at least once
밧줄 다리를 따라 걸으면 삐걱거리는 소리가 납니다. 얼마나 오래되었는지, 체중을 지탱할 수 있는지도 확실하지 않아요.그래도 엘프들을 잘 지탱하고 있는 것 같네요. 이 다리는 바로 아래 거대한 강이 깎아낸 협곡을 가로지르고 있어요.조심스럽게 발을 내딛자 밧줄이 늘어지고 꼬여요. 밧줄의 물리학을 모델링하여 주의를 분산시키기로 결심하고, 어디를 밟지 말아야 할지 알아낼 수도 있습니다.양쪽 끝에 매듭이 있는 밧줄을 생각해 보세요. 이 매듭은 밧줄의 머리와 꼬리를 표시합니다. 머리가 꼬리에서 충분히 멀어지면 꼬리가 머리 쪽으로 당겨집니다.플랑크 길이와 관련된 모호한 추론으로 인해 매듭의 위치를 2차원 그리드에서 모델링할 수 있어야 합니다. 그런 다음 머리에 대한 가상의 일련의 동작(퍼즐 입력)을 따라 꼬리가 어떻게 움직일지 결정할 수 있습니다.앞서 언급한 플랑크 길이로 인해 밧줄은 매우 짧아야 하며, 실제로 머리(H)와 꼬리(T)는 항상 닿아 있어야 합니다(대각선으로 인접하거나 겹쳐도 모두 닿은 것으로 간주):.....TH..........H....T.........H. (H가 T를 덮음)...머리가 꼬리에서 위, 아래, 왼쪽 또는 오른쪽으로 두 걸음 떨어진 경우 꼬리도 그 방향으로 한 걸음 이동하여 충분히 가깝게 유지해야 합니다:..... ..... ......th.. -> .t.h. -> ..th...... ..... ........ ... ....T. .T. ....H. -> ... -> .T.... .H. .H.... ... ...그렇지 않으면 머리와 꼬리가 닿지 않고 같은 행이나 열에 있지 않으면 꼬리가 항상 대각선으로 한 걸음씩 이동하여 따라갑니다:..... ..... .......... ..H.. ..H....H.. -> ..... -> ..T...T... .T... .......... ..... .......... ..... .......... ..... .......h.. -> ...h. -> ..th..T... .T... .......... ..... .....머리가 일련의 동작을 따라갈 때 꼬리가 어디로 가는지 계산하기만 하면 됩니다. 머리와 꼬리가 모두 같은 위치에서 시작하여 겹친다고 가정합니다.예를 들어R 4U 4L 3D 1R 4D 1L 5R 2이 일련의 동작은 머리를 오른쪽으로 4스텝, 위로 4스텝, 왼쪽으로 3스텝, 아래로 1스텝 이동하는 방식으로 진행됩니다. 각 단계가 끝난 후 머리가 더 이상 꼬리에 인접하지 않게 되면 꼬리의 위치를 업데이트해야 합니다. 시각적으로 이러한 동작은 다음과 같이 발생합니다(s는 시작 위치를 기준점으로 표시합니다):== 초기 상태 ==........................H..... (H는 T, s를 포함)== R 4 ==........................TH.... (T 커버 s)........................sTH...........................s.TH...........................s..TH.== U 4 ==......................H.s..T..................H.....T.s...............H.....T.......s.........H.....T.............s.....== L 3 ==...H......T.............s.......HT....................s......HT.....................s.....== D 1 ==..T....H................s.....== R 4 ==..T.....H...............s.......T......H..............s..............TH.............s...............TH............s.....== D 1 ==..........T......H......s.....== L 5 ==..........T.....H.......s...............T....H........s...................HT........s..................HT.........s.................HT..........s.....== R 2 ==.............H.... (H가 T를 덮음)......s..................TH.........s.....로프를 시뮬레이션한 후 꼬리가 한 번 이상 방문한 모든 위치를 세어볼 수 있습니다. 이 다이어그램에서 s는 다시 시작 위치(꼬리도 방문한 위치)를 표시하고 #는 꼬리가 방문한 다른 위치를 표시합니다:..##.....##..####.....#.s###..따라서 꼬리가 적어도 한 번 이상 방문한 위치는 13개입니다.가상의 일련의 동작이 주어졌을 때, 밧줄의 꼬리가 적어도 한 번 이상 방문한 위치의 수를 계산하는 함수를 Rust로 작성합니다.