Query one node per same predicate value/UID

For the record I found a way, but it requires a reverse index on word predicate :

{
  games as var(func: type(Game)) { // plus game filters
    uid
    words as word
  }
  me(func: uid(words), first: 3) {
    ~word @filter(uid(games)) (first: 1) {
      uid
      word { uid }
    }
  }
}

And now all returned games are on a different word:

  "data": {
    "me": [
      {
        "~word": [
          {
            "uid": "0xbef2f7", // game 1
            "word": {
              "uid": "0xbef275" // word
            }
          }
        ]
      },
      {
        "~word": [
          {
            "uid": "0xbef2ed", // game 2
            "word": {
              "uid": "0xbef276" // word
            }
          }
        ]
      },
      {
        "~word": [
          {
            "uid": "0xbef328", // game 3
            "word": {
              "uid": "0xbef277" // word
            }
          }
        ]
      }
    ]
  }