Why do you think the first option is wasteful?
You may create one intermediate table loading unique hierarchies( if possible) .
Fact would connect to intermediate table on Item Key.
Also you need to create three dimension table like Grand_Father_Item_table, father_item_table and Item_table.
These three would connect to different field on Intermediate Table.
But Of course, the data modelling would depend on what you are trying to achieve out of it.
let me know if that helps you in anyway.