diff --git a/2022/03/main.py b/2022/03/main.py
index 3e82655..e23bdbb 100644
--- a/2022/03/main.py
+++ b/2022/03/main.py
@@ -1,4 +1,4 @@
-from itertools import chain
+from itertools import chain, zip_longest
 
 from utils.input import read_input_lines
 
@@ -22,5 +22,13 @@ def get_priority(item: chr) -> int:
         raise ValueError(f"Invalid item: {item}")
 
 
-total_priority = sum(map(get_priority, misplaced_items))
-print(f"Total priority: {total_priority}")
+total_misplaced_priority = sum(map(get_priority, misplaced_items))
+print(f"Total misplaced item priority: {total_misplaced_priority}")
+
+line_iterator = iter(lines)
+rucksacks_per_group = zip_longest(line_iterator, line_iterator, line_iterator)
+rucksack_items_per_group = (list(set(item) for item in rucksack) for rucksack in rucksacks_per_group)
+common_items_per_group = (set.intersection(*rucksack_items) for rucksack_items in rucksack_items_per_group)
+badges = chain.from_iterable(common_items_per_group)
+total_badge_priority = sum(map(get_priority, badges))
+print(f"Total badge priority: {total_badge_priority}")