I have a dataset called data_words that looks as follows (these are just a few lines):
             Word     Cognate TestingMoment     Score freq
1        aambeeld     Cognate         Main2 0.3500000   10
2        aambeeld     Cognate         Main4 0.7670000   10
3           bezem     Cognate         Main2 1.0000000    5
4           bezem     Cognate         Main4 1.0000000    5
5    broodrooster Non-cognate         Main2 0.5428571   14
6    broodrooster Non-cognate         Main4 0.5714286   14
7            buis Non-cognate         Main2 0.4545455   11
8            buis Non-cognate         Main4 0.6363636   11
I'm creating a barplot of it that so far looks as follows:

This is the code that generated the plot:
ggplot(data_words %>% group_by(Word, Cognate) %>% arrange(desc(Score)), 
       aes(x = reorder(Word, -Score), 
           y = Score * 100, 
           fill = Cognate)) + 
  geom_bar(aes(group = TestingMoment, 
               colour = TestingMoment), 
           stat = "identity", 
           position = "identity", 
           alpha = 0.5) +
  geom_text(aes(label = freq), 
            size = 3, 
            position = position_nudge(x=0.1, y=3), 
            data = filter(data_words, TestingMoment == "Main4")) +
  theme(axis.text.x = element_text(size = 13),
        axis.text.y = element_text(size = 10),
        text = element_text(size = 15)) +
  labs(x = "Word\n", y = "\nAverage score at Main2 and Main4") +
  scale_fill_manual(values=c("#000000", "#56B4E9")) +
  scale_colour_manual(values=c("white", "white"), guide=FALSE) +
  coord_flip()
There are two things I'm struggling with and haven't been able to solve yet, even though I looked at other questions on this topic
1) The bars are currently ordered by the average value of Score over Main2 and Main4. This makes the graph quite messy. How can I sort it by either the value at Main2 OR Main4?
2) When point 1 is taken care of, I want those entries with the same score to be sorted alphabetically. The dataframe is already sorted alphabetically, but because I'm flipping the coordinates at the very end, the order of the words is exactly the other way around from how I want them. How can I do this?
Here are all the data:
structure(list(Word = structure(c(1L, 1L, 2L, 2L, 4L, 4L, 5L, 
5L, 6L, 6L, 7L, 7L, 8L, 8L, 9L, 9L, 11L, 11L, 12L, 12L, 13L, 
13L, 14L, 14L, 15L, 15L, 16L, 16L, 17L, 17L, 19L, 19L, 20L, 20L, 
21L, 21L, 22L, 22L, 23L, 23L, 24L, 24L, 25L, 25L, 26L, 26L, 27L, 
27L, 28L, 28L, 29L, 29L, 30L, 30L, 31L, 31L, 32L, 32L, 35L, 35L, 
36L, 36L, 37L, 37L, 38L, 38L, 40L, 40L, 41L, 41L, 42L, 42L, 43L, 
43L, 44L, 44L, 45L, 45L, 46L, 46L, 47L, 47L, 48L, 48L, 49L, 49L, 
50L, 50L, 51L, 51L, 52L, 52L, 53L, 53L, 54L, 54L, 55L, 55L, 56L, 
56L, 57L, 57L, 58L, 58L, 59L, 59L, 60L, 60L, 61L, 61L, 62L, 62L, 
63L, 63L, 64L, 64L, 65L, 65L, 66L, 66L, 67L, 67L, 68L, 68L, 69L, 
69L, 70L, 70L, 71L, 71L, 73L, 73L, 74L, 74L, 75L, 75L, 76L, 76L, 
77L, 77L, 78L, 78L, 79L, 79L, 80L, 80L, 81L, 81L, 82L, 82L, 83L, 
83L), .Label = c("aambeeld", "bezem", "brandblusser", "broodrooster", 
"buis", "citruspers", "dienblad", "dobber", "dweil", "emmer", 
"garde", "gesp", "gieter", "gum", "heggenschaar", "hengel", "hes", 
"kaars", "kapstok", "keppel", "kist", "klapper", "klos", "knikker", 
"knuffel", "kooi", "kous", "kraag", "kroon", "kruiwagen", "kruk", 
"kurk", "kussen", "kwast", "lantaarn", "lessenaar", "mijter", 
"onderzetter", "pak", "passer", "peddel", "pet", "pruik", "puntenslijper", 
"rammelaar", "reddingsvest", "rietje", "rits", "romper", "sambabal", 
"schort", "schroef", "servet", "skelter", "slab", "slang", "slinger", 
"speen", "speldje", "spijker", "spuit", "staf", "stamper", "stelt", 
"stofzuiger", "stokpaard", "stolp", "tamboerijn", "tol", "tooi", 
"toverstaf", "tuinbroek", "tulband", "vergiet", "veter", "vijl", 
"vijzel", "waaier", "wafelijzer", "wip", "zaag", "zeis", "zwemvleugel"
), class = "factor"), Cognate = structure(c(1L, 1L, 1L, 1L, 2L, 
2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 
1L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 
2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 
1L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 
2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 
2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L), .Label = c("Cognate", "Non-cognate"), class = "factor"), 
    TestingMoment = structure(c(2L, 3L, 2L, 3L, 2L, 3L, 2L, 3L, 
    3L, 2L, 3L, 2L, 3L, 2L, 2L, 3L, 2L, 3L, 3L, 2L, 3L, 2L, 2L, 
    3L, 2L, 3L, 3L, 2L, 3L, 2L, 2L, 3L, 3L, 2L, 2L, 3L, 2L, 3L, 
    2L, 3L, 3L, 2L, 3L, 2L, 3L, 2L, 3L, 2L, 3L, 2L, 3L, 2L, 2L, 
    3L, 2L, 3L, 2L, 3L, 3L, 2L, 2L, 3L, 3L, 2L, 2L, 3L, 3L, 2L, 
    2L, 3L, 3L, 2L, 3L, 2L, 2L, 3L, 2L, 3L, 3L, 2L, 3L, 2L, 2L, 
    3L, 3L, 2L, 2L, 3L, 2L, 3L, 3L, 2L, 3L, 2L, 2L, 3L, 3L, 2L, 
    3L, 2L, 3L, 2L, 3L, 2L, 2L, 3L, 2L, 3L, 3L, 2L, 2L, 3L, 2L, 
    3L, 3L, 2L, 3L, 2L, 2L, 3L, 3L, 2L, 2L, 3L, 2L, 3L, 2L, 3L, 
    3L, 2L, 3L, 2L, 3L, 2L, 3L, 2L, 2L, 3L, 2L, 3L, 2L, 3L, 2L, 
    3L, 3L, 2L, 3L, 2L, 3L, 2L, 3L, 2L), .Label = c("Post", "Main2", 
    "Main4", "FollowUp"), class = "factor"), Score = c(0.35, 
    0.767, 1, 1, 0.542857142857143, 0.571428571428571, 0.454545454545455, 
    0.636363636363636, 1, 1, 1, 1, 0.866666666666667, 0.666666666666667, 
    1, 1, 0.042, 0.108666666666667, 0.383333333333333, 0.25, 
    0.871538461538462, 0.512307692307692, 0.9175, 1, 1, 1, 0.946666666666667, 
    0.493333333333333, 0.585, 0.5, 0.362307692307692, 0.692307692307692, 
    0.5, 0.416666666666667, 0.003, 1, 1, 1, 0.35, 0.616666666666667, 
    1, 1, 1, 1, 0.785714285714286, 0.714285714285714, 0.227272727272727, 
    0.181818181818182, 1, 0.9, 1, 1, 0.504666666666667, 0.908, 
    0.9375, 1, 0.666666666666667, 0.944444444444444, 0.75, 0.6425, 
    0.686, 0.871333333333333, 0.335, 0.335, 1, 1, 0.666666666666667, 
    0.6, 0.571428571428571, 0.857142857142857, 1, 1, 0.7, 0.6375, 
    0.648666666666667, 0.678666666666667, 0.71, 1, 0.9, 0.8, 
    0.75, 0.583333333333333, 1, 1, 0.83, 0.003, 0.902666666666667, 
    0.917333333333333, 0.261538461538462, 0.384615384615385, 
    0.42, 0.353, 0.93, 0.9475, 0.214285714285714, 0.612142857142857, 
    0.533333333333333, 0.316666666666667, 1, 0.833333333333333, 
    0.857142857142857, 0.785714285714286, 0.732142857142857, 
    0.357142857142857, 0.285714285714286, 0.857142857142857, 
    0.559285714285714, 0.785714285714286, 0.25, 0.25, 0.75, 1, 
    0.903333333333333, 1, 0.573571428571429, 0.532857142857143, 
    1, 1, 1, 1, 0.25, 0.003, 0.916666666666667, 1, 0.316666666666667, 
    0.533333333333333, 0.714285714285714, 0.857142857142857, 
    0.7225, 0.695, 0.593333333333333, 0.279333333333333, 1, 1, 
    0.230769230769231, 0.153846153846154, 0.003, 0.003, 0.269285714285714, 
    0.342857142857143, 0.666666666666667, 0.866666666666667, 
    0.698571428571429, 0.841428571428571, 1, 0.916666666666667, 
    0.757272727272727, 0.533636363636364, 0.555833333333333, 
    0.479166666666667, 0.99, 0.99), freq = c(10L, 10L, 5L, 5L, 
    14L, 14L, 11L, 11L, 3L, 3L, 1L, 1L, 3L, 3L, 1L, 1L, 15L, 
    15L, 15L, 15L, 13L, 13L, 4L, 4L, 1L, 1L, 15L, 15L, 4L, 4L, 
    13L, 13L, 6L, 6L, 1L, 1L, 2L, 2L, 15L, 15L, 1L, 1L, 11L, 
    11L, 14L, 14L, 11L, 11L, 10L, 10L, 1L, 1L, 15L, 15L, 4L, 
    4L, 9L, 9L, 12L, 12L, 15L, 15L, 2L, 2L, 11L, 11L, 15L, 15L, 
    7L, 7L, 1L, 1L, 8L, 8L, 15L, 15L, 1L, 1L, 1L, 1L, 12L, 12L, 
    10L, 10L, 1L, 1L, 15L, 15L, 13L, 13L, 10L, 10L, 8L, 8L, 14L, 
    14L, 15L, 15L, 12L, 12L, 14L, 14L, 14L, 14L, 7L, 7L, 14L, 
    14L, 3L, 3L, 4L, 4L, 3L, 3L, 14L, 14L, 1L, 1L, 8L, 8L, 4L, 
    4L, 12L, 12L, 15L, 15L, 7L, 7L, 4L, 4L, 15L, 15L, 1L, 1L, 
    13L, 13L, 1L, 1L, 14L, 14L, 15L, 15L, 7L, 7L, 12L, 12L, 11L, 
    11L, 12L, 12L, 10L, 10L)), .Names = c("Word", "Cognate", 
"TestingMoment", "Score", "freq"), row.names = c(NA, -152L), class = "data.frame")
 
    