public static void main(String[] args) throws IOException { try (BufferedReader br = new BufferedReader( new InputStreamReader(Day01.class.getResourceAsStream("/01-input.txt")))) { Position pos = new Position(), firstVisitedTwice = null; Direction direction = Direction.NORTH; Set<Position> visited = new HashSet<>(); visited.add(pos); for (String move : br.readLine().split(", ")) { direction = direction.turn(Turn.valueOf(String.valueOf(move.charAt(0)))); for (int i = 0; i < Integer.parseInt(move.substring(1)); i++) { pos = direction.move(pos); if (firstVisitedTwice == null && visited.contains(pos)) { firstVisitedTwice = pos; } visited.add(pos); } } System.out.println(pos.distance()); System.out.println(firstVisitedTwice.distance()); } }