For part 1, it is assumed that the point S has exactly 2 connections (otherwise the loop wouldn't quite be continuous and you risk creating multiple interior points, which would make Part 2 much more difficult). Thus we simply need to find which neighbors of S could be connected (example: The only pipes that would be valid connections to the left of S are ("-", "F", "L")). By finding these 2 connections, I figured it would be simpler to trace the entire path than traverse both sides until I met back at the opposite side, so I select only one connected neighbor (doesn't matter which), keep track of which direction the pipe is moving, and then traverse the entire loop of pipe until I return to S. The answer to part 1 is however many pipes we went through along the way divided by 2 (It is a fun and simple challenge to show that for a grid setup like this, the total path length will always be even).
For part 2, we now make use of some data we collected as the loop of pipe was discovered, namely whether we turned left, right, or not at all (denoted -1, 1, 0, respectively). The trick here is that if you add all the turn values together, you can determine which side of the loop of pipe the interior is on since the interior will always be on the same side as the loop is traversed (To better understand this principle: imagine standing at the edge of a swimming pool such that the pool is to your right. If you then begin walking all around the pool to get back where you started, the pool will always be to your right). The reason that the sum of all the turn values allows you to know which side of the path is the interior is that in order to walk around the interior of a loop, you will necessarily have to turn more in the direction of the interior than you do away from it. Simplifying the pool example, imagine you stand next to a square pool with the water on your Right. Walking around the pool, you will have turned Right 4x before returning to the start.
Now that you know which side of the loop the interior is on, you can determine which interior points are immediate neighbors pipes in the loop and then do what is essentially a Breadth First Search (BFS) of all of those points to get all interior points of the loop. The count of those points should give you your answer.
Workflow:
Build Pipe Loop Macro:
Find Interior Points Macro: