Search and filter a specific node DQL

I have a node that expands to multiple different nodes with a @recurse(depth:xx)
but i want to only get to a specific node,

so it should be a search and filter process, but not sure why its driving me nuts

{

relationship(func: eq(name, "Alice")) @recurse(depth:3) 

  @filter(eq(name,"Ethan"))
{
  name
friend
}
}

the above is what i tried, but am not getting any data

the mutation is as below

{
  set {
    _:a <friend> _:b .
    _:a <friend> _:c .
    _:a <friend> _:d .
    _:b <friend> _:d .
    _:a <friend> _:e .
    _:b <friend> _:e .
    _:a <friend> _:f .
    _:a <friend> _:bb .
    _:bb <friend> _:c .
    _:a <name> "Alice" .
    _:a <dgraph.type> "Person" .
    _:b <name> "Bob" .
    _:b <dgraph.type> "Person" .
    _:bb <name> "Bobby" .
    _:bb <dgraph.type> "Person" .
    _:c <name> "Chow" .
    _:c <dgraph.type> "Person" .
    _:d <name> "Danny" .
    _:d <dgraph.type> "Person" .
    _:e <name> "Ethan" .
    _:e <dgraph.type> "Person" .
    _:f <name> "Francis" .
    _:f <dgraph.type> "Person" .
   
  }
}

Maybe something like this

{
U as var(func: eq(name, "Alice")) @recurse(depth:3) {
  friend #You can add the U var here instead too
}

q(func: uid(U)) @filter(eq(name,"Ethan")) {
  name
  friend
}
}

The above does not return me anything.
The below query works for me, only thing is if i have 10 different types of relationships, then for each i would need to add the “@filter…”

{
relationship(func: eq(name,“Alice”)) @recurse(depth:3) {
name
friend @filter(eq(name,“Ethan”))
}
}