I’ve created a small example using an embedding for your pos tags.
I assume your pos tags have valid values between [0, 0, 0] to [1, 1, 1].
Also, I’m treating each combination as one “word”.
Could you check, if this would work for you?
def prepare_sequence(seq, word_to_ix):
    idxs = [word_to_ix[str(w.numpy())] for w in seq]
    return torch.tensor(idxs, dtype=torch.long)


class MyModel(nn.Module):
    def __init__(self):
        super(MyModel, self).__init__()
        self.embedding = nn.Embedding(8, 3)
        self.fc = nn.Linear(7, 8)
        
    def forward(self, x_dist, x_pos1, x_pos2):
        x_pos1 = self.embedding(x_pos1)
        x_pos2 = self.embedding(x_pos2)
        x = torch.cat((x_dist, x_pos1, x_pos2), 1)
        x = self.fc(x)
        return x


# Create word_to_ix lookup for [0, 0, 0], [0, 0, 1], ...
word_to_ix = {
    '[{}]'.format(' '.join('{:b}'.format(i).zfill(3))): i
    for i in range(8)
}    

# Create dummy data
nb_samples = 10
x_dist = torch.randn(nb_samples, 1)
x_pos1 = torch.randint(0, 2, (nb_samples, 3))
x_pos2 = torch.randint(0, 2, (nb_samples, 3))

# Prepare sequences ([0, 0, 0] -> 0; [0, 0, 1] -> 1; ...)
x_pos1_idx = prepare_sequence(x_pos1, word_to_ix)
x_pos2_idx = prepare_sequence(x_pos2, word_to_ix)

model = MyModel()
output = model(x_dist, x_pos1_idx, x_pos2_idx)