did alot assign proper indices in non random fashion and cleanly ignore cases when constraints cannot be fulfilled (there will need to be error handling and restarts but thats for later), now we just need to properly map characters to popped indices