diff --git a/day10/src/main.rs b/day10/src/main.rs
index 8b4c687..c66502f 100644
--- a/day10/src/main.rs
+++ b/day10/src/main.rs
@@ -8,41 +8,28 @@ fn main() {
 }
 
 fn pt1(grid: &Grid) -> usize {
-    dfs(grid)
+    score(grid)
 }
 
 fn pt2(grid: &Grid) -> usize {
-    bfs(grid)
+    rank(grid)
 }
 
-fn dfs(grid: &Grid) -> usize {
+fn score(grid: &Grid) -> usize {
     let mut total = 0;
 
     for head in grid.heads.iter() {
         let mut htotal = 0;
-        let mut processed = HashSet::new();
         let mut q = Vec::new();
-
+        let mut nines = HashSet::new();
         q.push(*head);
         while let Some(current) = q.pop() {
-            if !processed.contains(&current) {
-                q.push(current);
+            if grid.get(&current).unwrap() == 9 && nines.insert(current) {
+                htotal += 1;
             }
-
-            let mut do_top = true;
             let nexts = grid.next_step(&current);
             for next in nexts.iter() {
-                if !processed.contains(next) {
-                    q.push(*next);
-                    do_top = false;
-                }
-            }
-
-            if do_top {
-                let _ = q.pop();
-                if processed.insert(current) && grid.get(&current).unwrap() == 9 {
-                    htotal += 1;
-                }
+                q.push(*next);
             }
         }
         total += htotal;
@@ -51,7 +38,7 @@ fn dfs(grid: &Grid) -> usize {
     total
 }
 
-fn bfs(grid: &Grid) -> usize {
+fn rank(grid: &Grid) -> usize {
     let mut total = 0;
 
     for head in grid.heads.iter() {
@@ -59,12 +46,11 @@ fn bfs(grid: &Grid) -> usize {
         let mut q = VecDeque::new();
         q.push_back(*head);
         while let Some(current) = q.pop_front() {
+            if grid.get(&current).unwrap() == 9 {
+                htotal += 1;
+            }
             let nexts = grid.next_step(&current);
             for next in nexts.iter() {
-                if grid.get(next).unwrap() == 9 {
-                    htotal += 1;
-                }
-
                 q.push_back(*next);
             }
         }
@@ -157,6 +143,8 @@ impl Grid {
         out
     }
 
+    // returns list of neighbor nodes in a dag where the edges are all one step in
+    // distance
     fn next_step(&self, loc: &Loc) -> Vec<Loc> {
         let alt = self.rows[loc.row][loc.col];
         let target = alt + 1;