import java.util.ArrayList;
import java.util.List;


public class OddEvenTree {

    public int[] getTree(String[] dist)
    {
        int[] noSolution = new int[1];
        noSolution[0] = -1;

        int n = dist.length;
        int[] d = new int[n];
        List<Integer> part0 = new ArrayList<Integer>(), part1 = new ArrayList<Integer>();
        for(int i = 0; i < n; i++)
            if(dist[0].charAt(i) == 'E') {
                d[i] = 0;
                part0.add(i);
            }
            else {
                d[i] = 1;
                part1.add(i);
            }
        if(d[0] == 1)
            return noSolution;
        if(part0.size() == 0 || part1.size() == 0)
            return noSolution;
        for(int i = 0; i < n; i++)
            for(int j = 0; j < n; j++)
            {
                int shouldBe = (d[i] + d[j]) % 2;
                if(shouldBe == 0 && dist[i].charAt(j) == 'O')
                    return noSolution;
                if(shouldBe == 1 && dist[i].charAt(j) == 'E')
                    return noSolution;
            }

        int[] ret = new int[(n-1)*2];
        int p = 0;
        for(int i = 0; i < part1.size(); i++)
        {
            ret[p] = part0.get(0);
            p ++;
            ret[p] = part1.get(i);
            p ++;
        }
        for(int i = 1; i < part0.size(); i++)
        {
            ret[p] = part0.get(i);
            p ++;
            ret[p] = part1.get(0);
            p ++;
        }
        return ret;
    }

}
