
You are given an undirected tree with n nodes, numbered from 0 to n - 1 . It is represented by a 2D integer array edges of length n - 1 , where edges[i] = [a _i , b _i ] indicates that there is an edge between nodes a _i and b _i in the tree.
You are also given two binary strings start and target of length n . For each node x , start[x] is its initial color and target[x] is its desired color.
In one operation, you may pick an edge with index i and toggle both of its endpoints. That is, if the edge is [u, v] , then the colors of nodes u and v each flip from '0' to '1' or from '1' to '0' .
Return an array of edge indices whose operations transform start into target . Among all valid sequences with minimum possible length , return the edge indices in increasing order.
If it is impossible to transform start into target , return an array containing a single element equal to -1.
2 <= n == start.length == target.length <= 10 ^5edges.length == n - 1edges[i] = [a _i , b _i ]0 <= a _i , b _i < nstart[i] is either '0' or '1' .target[i] is either '0' or '1' .The input is generated such that edges represents a valid tree.