[Question]
  [
**TLDR:** Sort your input according to a new English alphabet somewhat based on Chinese stroke count methods.
**Background:** In a Chinese glossary/index, finding terms that are contained within the book is different from English because Chinese doesn't have an alphabet like English, instead they are sorted by stroke count. `(一畫 = 1 stroke，二畫 = 2 strokes，三畫 = 3 strokes，四畫 = 4 strokes，and so on)`
An English glossary, having an alphabet, is naturally sorted alphabetically. For this challenge, we flip that idea somewhat to follow the Chinese manner. And we'll follow some Chinese writing rules to help determine stroke order for the alphabet below.
**Counting Strokes:** Take 口 (kou) for example, a simple square. You'd think it is 4 strokes, but it is actually 3. The 1st being the left vertical line. The 2nd being the top horizontal and right vertical in one fluid stroke, forming the corner. And the 3rd being the lower horizontal line, completing the square. This pattern, among others, holds relatively true across Chinese characters. For sake of simplicity though, and for some added diversity in the English Stroke Count Alphabet, there is a somewhat *subjective* choice for stroke counts.
**Defining the NESCA** First, I need to define stroke count for each letter. For sake of simplicity, and somewhat *subjectively*, I'll use the characters as they appear below. If there are any arguments why a letter should have a different stroke count, please make your case, but again in order to promote diversity in stroke counts, I made some personal judgment calls. For example, `W` could arguably be done in 2 strokes, where each stroke makes a `v` shape, but if that was the case for every letter, this new alphabet would essentially resemble the original. Hence my *subjective* choice of stroke counts. (For those that also read/speak Mandarin, 不好意思！)
`A B C D E F G H I J K L M N O P Q R S T U V W X Y Z`
`3 3 1 2 4 3 2 3 3 1 3 2 4 3 1 2 2 3 1 2 1 2 4 2 3 3`
`a b c d e f g h i j k l m n o p q r s t u v w x y z`
`2 2 1 2 2 2 2 2 3 2 3 2 3 2 1 2 2 2 1 2 2 2 4 2 2 3`
Letters with equal stroke counts should retain the original alphabetic order as before. The only tie-breaker should be upper and lower case letters with the same stroke counts. `C and c, O and o, S and s, D and d, etc.` So the English Stroke Order Alphabet is as follows. (If I made an error, please say as much, there are a lot of examples that I might have to adjust)
**The NESCA**
`C J O S U D G L P Q T V X A B F H I K N R Y Z E M W`
`c o s a b d e f g h j l n p q r t u v x y i k m z w`
and more specifically...
`CcJOoSsUabDdefGghjLlnPpQqrTtuVvXxyABFHIiKkNRYZzEMmWw`
`1111111122222222222222222222222222333333333333344444`
**Note 1:** Tiebreakers - If upper and lowercase for the same letter have the same stroke count, uppercase letters take precedence.
* "Cousin" precedes "cousin"
* "father" precedes "Father" (because lowercase f is 2 strokes, while the uppercase is 3)
* "Stop" precedes "soap" (while the o would precede t in stroke count, uppercase S precedes lowercase s)
* KO precedes kO (K precedes k)
* kO precedes ko (O precedes o)
* make precedes When (both have 4 strokes, but m precedes W in the original alphabet)
**Note 2:** Input will never include any numbers, punctuation, or special characters, nor will it be empty.
**Note 3:** I left this challenge in the Sandbox for 2 weeks as a precaution. I'm worried a lot of people will argue against my subjective decisions in defining this alphabet (especially the letter `g`). I merely tried to allow for a very new and very different alphabet, and to add more diversity to Challenges.
**The Challenge** Given a string input containing a sentence, series of words, or a list of words, organize those words according to the NESCA. Output can be either a string, or a list of properly words is a single string of properly organized words, including duplicates should they exist.
**EDIT** At the behest of users, I have changed my examples to be one consistent input/output format. My example formats can be found here, and exact examples can be obviously found in edit history.
* Example Format 1 `"INPUT HERE" / "OUTPUT HERE"`
* Example Format 2 `[INPUT HERE] / [OUTPUT HERE]`
* Example Format 3 `["INPUT", "HERE"] / ["OUTPUT", "HERE"]`
* Any suitable format for your language, as per community standards.
**Input / Output**
`"It was the best of times it was the worst of tImes" / "of of best the the tImes times It it worst was was"`
`"When life gives you lemons make Lemonade" / "gives Lemonade lemons life you make When"`
`"The journey of a thousand miles begins with one step" / "of one step a begins journey The thousand miles with"`
`"English Stroke Count Alphabet" / "Count Stroke Alphabet English"`
`"A man a plan a canal panama" / "canal a a panama plan A man"`
`"Carry on my wayward son" / "Carry on son my wayward"`
`"Close our store and begin destroying every flower green house just lose no people quietly rather than using vexing xrays yesterday it killed Zachs mini wombat" / Same as input` (If you can write a better sentence than above, I'd be much appreciated. I'd gift reputation, but I don't know how)
`"May the Force be with you" / "be the you Force May with"`
`"Im going to make him an offer hE cant refuse" / "cant offer an going him hE refuse to Im make"`
`"jello Jello JellO JEllo jellO JELlo JELlO jEllo JELLO JelLo JeLlo" / "JeLlo JelLo JellO Jello JELLO JELlO JELlo JEllo jellO jello jEllo"` (Annoyed? Me too!)
`"We suffer more often In imagination than IN reality" / "often suffer reality than In IN imagination more We"`
`"Code Golf and Coding Challenges" / "Code Coding Challenges and Golf"`
`"Do or DO not there is no try" / "or DO Do no not there try" is"`
`"Failure the best teacher is" / "best teacher the Failure is"`
`"Can you tell that I am a Star Wars fan" / "Can Star a am fan tell that you I Wars"`
`"enough examples no more words" / "enough examples no more words"`
  
[Answer]
# [Japt](https://github.com/ETHproductions/japt), 53 [bytes](https://en.wikipedia.org/wiki/ISO/IEC_8859-1)
I/O as an array of words. I wasn't able to run *all* the test cases 'cause trying to format the input for them all on my phone got to be infuriating.
```
n`CcJOoSsUabD¸fGghjLlnPpQqrTtuVvXxyABFHIiKkNRYZzEMmWw
```
[Try it](https://petershaggynoble.github.io/Japt-Interpreter/?v=1.4.6&header=cVM&code=bmBDY0pPb1NzVWFiRLhmR2doakxsblBwUXFyVHR1VnZYeHlBQkZISWlLa05SWVp6RU1tV3c&input=Ikl0IHdhcyB0aGUgYmVzdCBvZiB0aW1lcyBpdCB3YXMgdGhlIHdvcnN0IG9mIHRJbWVzIgotUw) (header splits input strings on spaces)
[Answer]
# [Jelly](https://github.com/DennisMitchell/jelly), 38 bytes
```
“EḂ 2JḶ]{⁵+cUBẋ÷ỌṫƇÆ⁷ɗ"CỵƊ¢Ṁċ’œ?ØẠ¤w)Þ
```
[Try it online!](https://tio.run/##y0rNyan8//9RwxzXhzuaFIy8Hu7YFlv9qHGrdnKo08Nd3Ye3P9zd83Dn6mPth9seNW4/OV3J@eHurce6Di16uLPhSPejhplHJ9sfnvFw14JDS8o1D8/7f7jd@///aKWQjFQlHQWlrPzSorzUShAzPw1EJoKIkoz80uLEvBQQOzczJ7UYxEhKTc/MA7PKM0sywDrywGYUl6QWKMUCAA "Jelly – Try It Online")
[Verify all test cases](https://tio.run/##bVTNbtNAEL7zFFHEBdETL4BKmiKXQA4FVVD1MInX9qbr3bBex7G4pD1QifbGAZAQQogbXEv/bg1U4jGcFwnrmbUdEBd7dzzzzTcz33jEhMiXy8XsY7c4P2zd2yrOf@y9Whyc3h0@e1BcHs/PiquT4uLbzdH89eLg7Pe7dqe4Or15c/2luJj9PF7MPvx6e3/@vrj8fP01uzP/tJwfPbq9OPz@fLncvdVq7bY9015rtTNIypeJWPkasAStKkAjjxl@5f9xzZT@y9crfffWEHonYrI0Ch6gb8gnBJSrFO0sVhINMeyjR6@0gM8qhKeUZKRSLVnepAFioNIEpI8AXBD0gIWcMDNuIoyQiJEYNq5guzIUPMGv20Yryt1RqcRK1sU4ggEzlfc6MZR14rFYuQxBgkCrPcRQBXVAayKMrnFOrcsz0Eg4sfbKVagEGdgqianSeHe1YUnlwbdj0SrnMixvbMIoQyBUxjAy1Iw6XnaGOpfSdKoUUiFVpsYC7y9TzoxAGA12pJoaS/WliUs1YVN3mmrIaYSWC9M@5I0w9rkQDBm/gGFEc@WSk0riAdQNfUxRTkGbSg@d6lbHVmrE@XsxFqccB6NWJRPxmHpF6giohKjrZoPMNAvKfji4kV0phNhaPfTx0HWWUWPpOR97QMuo8rGWXt@F9xxO6Vypn2SXVpRiN1UVGBqSh08egx0vGE5CqXrvPSHiILjJa6UoHyEeKhGsCMSaXWs6EdgZyLDZwQ0kppDBRp8kYFz3iQ9PGmEYXefaBC5S8vjnr2CYHS/VxJNG73Jls41tn6sGQzxkG9dLs20A43dAY/YA6m1gUqUhKoBNIR67tSZ6VQvtT8fHzHt/AA "Jelly – Try It Online")
A monadic link that accepts and returns a list of words.
## Explanation
```
“...’œ?ØẠ¤w)Þ   Main monadic link
            Þ   Sort by
           )      Map [over each letter in a given word]
          w         Find index of subsequence in
         ¤          (
“...’                 3928442642485912187600397757783525135099072511850472479412437675483
     œ?               rd permutation of
       ØẠ             the string "ABC...XYZabc...xyz"
         ¤          )
```
[Answer]
# [Perl 5](https://www.perl.org/) `-a`, ~~104~~ 100 bytes
*@NahuelFouilleul saved 4 bytes*
```
sub t{pop=~y/CcJOoSsUabDdefGghjLlnPpQqrTtuVvXxyABFHIiKkNRYZzEMmWw/A-z/r}say for sort{t($a)cmp t$b}@F
```
[Try it online!](https://tio.run/##Fci3EoIwGADgV/kHBh0QHBi9Ews2sPctQChSEpOAIoePbtTtu49ilhpS8sIFUVNCe@9KG3rzFdnxA3JHPg4mYXSz03xNN3e2F8WxPD8rc2BNZ/EiWW4v19fYyU4PzVRfGms4qiAgDDhhohYtBbW9jIJQ3KZvSXmKcA5pHGAI4xJzqEgBKc5IziFDCQb7b@TjD6Ei/q1UHaOjd3Wpoi8 "Perl 5 – Try It Online")
[Answer]
# [Python 3](https://docs.python.org/3/), ~~107~~ ~~101~~ 99 bytes
Saved ~~6~~ 8 bytes (and got below 100!) thanks to [ovs](https://codegolf.stackexchange.com/users/64121/ovs)!!!
```
lambda s:s.sort(key=lambda k:[*map("CcJOoSsUabDdefGghjLlnPpQqrTtuVvXxyABFHIiKkNRYZzEMmWw".find,k)])
```
[Try it online!](https://tio.run/##1ZVbb@M2EIXf8ysGerFduAHaLVAggAukuWydetfbbtq0e3mgrZFEmyK1JBVbG@xvT89QctZBX/raILEZkprLmfPZTRcrZ188FrMPj0bVq1xROAunwfk43nI3G/a2Z@@/qVUzzi7WN0v3NvyhVpc5Fy/LarMw9k3z2yd/G9s/7//ad@c/X/8y179uX//@97vPV6/qu112WmibT7eTj5PHyCEGmtE4m0faqUCxYlphk1xBUdccSH892Dk/nMxxkk2zu4otGV0wlfoedzvXkuHa2UC12jItZK1yzmia3SLAxrXecichFCK6NiibU60Nnl1xqfHcTseKnGUKkRukuLKl0aGit9E7RLxwrY10bppKrTji/ByZLKI1Jr2tlVWGGrzWCqcXynuks1R36KLbKZ9TcFZOjAtMqAeJnGeSQlIJlKN97zptS@J7xuOFcTv2VHpGt1I0GmkhRIpgHTXsGsP0qdUcTUdeQSuP9lBQGyTMPe/lbe9VB40Qnn2uOlF2q43hnN6pdQXJtNXQuF4paewVbojo186vZSa9MlAYZ/OaSicho@uFrnSNDqBrgczVlcgQyXOBWnF9w8Y4unl6XdLNlaw3w3oh@3hd0ibtY71Yys2F3MepjBoTaVP4WuRyRYQYc0u6VhBNRQ2RU8vz10isjI6dqOxyppfOFElf/CdFX1QKXdsyWejSkfN0uYSQUfpFbB1E1eglwLXSpsXeky8jQytUoUMar02ei2hEskeak4IScIvydKd8oELJtNm6tqyI96puxGyIn9qAo3MEOpmc8L7hdcQsBAb4E799vqpPniw/IAFWhIpEg7CBP@ToEThY/sBBokNqTHMSYHBV4g8WR7GD8w9w3KaMz9iQ0Sc1xfwDCQcGaCAE5735ldCQAOihSIQcsxCe8fB/YGHVz0Bk7HEQOAZRktV74yNJj4XgAAp6AAQSACP643ry85O3k//5yPOJggMRXxnpCUp0pPGJ@QccBrMP5k/@P2Yi2eyODyz8C4EkthAicRMIIMK6IxwAQu/2Z/5PHw0DHE8sJNsrQQC2P6JChJsnHv4TC0iw3iIHUBh9aL//8Yf1aEpp9d2L0eSkQJ1xirSWPutmnL5DpnQAaHJ2QvgxeDqehgbajCdppxibfiFfOCManW4wq8Ne47WN42KUPcQvGX37E2UPAYuHoZT3YTbjj19Gk8d/AA "Python 3 – Try It Online")
Inputs a list of strings and sorts them accordingly.
[Answer]
# [R](https://www.r-project.org/), ~~159~~ ~~134~~ 125 bytes
```
icuSetCollate(locale="ASCII");s=scan(,"");s[order(chartr("CcJOoSsUabDdefGghjLlnPpQqrTtuVvXxyABFHIiKkNRYZzEMmWw","A-Za-z",s))]
```
[Try it online!](https://tio.run/##FcbLEoIgFADQX2FY4Yx@QePCLMvKXvYwmxaIt7BICjDTn6fprI6ytmJNCiaUQlADREhGBfg4SMM4xs5A@5rRmrj4/7NUJSjCOFVGERyy2Uqmek@LUQnXyY3fF6JevzZvtTPN4ZN9u2AYTeNq/lhuT3k/Tp7HFrs48HLq9djVjnOxCe2Q4YAiqRigAlBbGY462dgf "R – Try It Online")
Thanks to [Dominic van Essen](https://codegolf.stackexchange.com/users/95126/dominic-van-essen) for -7 bytes.
Similar to others, translate the characters in the string using `chartr` into an appropriate `order`, then sort the strings using that `order`.
The default collation order in the R install on TIO, `en_US.UTF8`, is very odd: while, for instance, `e` comes before `E`, `ekF` comes *after* `EgHTk` (those being the translations of "and" and "begin" in the unchanged test case). So I switch to an ASCII locale, which compares by byte value instead.
[Answer]
# [05AB1E](https://github.com/Adriandmen/05AB1E/wiki/Commands), 38 [bytes](https://github.com/Adriandmen/05AB1E/wiki/Codepage)
```
ΣžnS•f[?θ$Ÿ)*:™ûò0Æì+Ω£µ¥.—g"Ý»θä•.Isk
```
I/O as a list of list of characters.
Port of [*@xigoi*'s Jelly answer](https://codegolf.stackexchange.com/a/215282/52210), so make sure to upvote him/her as well!
[Try it online](https://tio.run/##yy9OTMpM/f//3OKj@/KCHzUsSou2P7dD5egOTS2rRy2LDu8@vMngcNvhNdrnVh5afGjroaV6jxqmpCsdnnto97kdh5cANeh5Fmf//x8dreSppKOgVKIUq6MQrVQOYieCiGKIQAmInQEiUiECSRA2WAVCXz6InYakJRNE5CKpBUtlkmQVWAXY5CKC9nli2BcLAA) or [verify all test cases](https://tio.run/##RZK/btRAEMZ7nmJkaIAook5zivIHOTq44pAiEVHsxWN7L@sds7u@OxdIKRBPQEuThAKJAiGBToqgOCvtPURe5PjWiUJj7@7MfDPfb1e8mmjezJLU1k3YIUoG7dajZNSEfovd@PFmfXnz145vzy/yk8F6@eRm@fTZzu3Hi@66@/mi@9R9f77@trpc/Vp93b49/1wk3ZfV9XrZXaFgO/Vnmw9H3Y/uz9bq92BzkqSB5spTKJkm7ANJTkFX7En/D8zF3UdSRJKt5LhkS0bnTIWeIbeVhgxXYj1V6oxpGNcqY6S@Qf1UGme5jQoKgtJ4ZTOqtEHphAuNsrkOJYll8oFrlB3Ywmhf0jg4geCeNDbQrqlLNeGA@C4aWajVpv@dKqsM1fhWCtE95RzaWapamGjnymXkxcaIEc@EedBIHFMcpB@BMrh30mpbEM8Y5bmROTsqHMNsHBpGGnDoFaxQzVIbpveN5mBacgqoHOxhoMZHmRkv4m/hVAtEkGeXqTaCPdPGcEZv1WkJYtpqIK4mKhp7hYzI/FDcabySOzIAjFhaUSFRMsgd51JXcACuOTqXBxFDIMc5ZkX6lI0ROnr4jujoIK6n9@thPMd3RNP@HOvhKGYOYz6i8aZxI00vX0VckgfASC3pSgGaChqQe8vpazRWRoc2UpaM6aWYvOeLXRx6r1RwbYv@Be0LiaP9EUCG6Bfa2keqwUWBQ6VNg7OHZxkYrDCF9v312v7JBRiJ3QOlpEACr0U5OlbOU67ibbOVpiiJF6qq42ODfm8DDzrzybt/).
**Explanation:**
```
Σ           # Sort the (implicit) input-list by:
 žn         #  Push the constant string "ABC...XYZabc...xyz"
   S        #  Convert it to a list of characters
    •f[?θ$Ÿ)*:™ûò0Æì+Ω£µ¥.—g"Ý»θä•
           "#  Push compressed integer 3928442642485912187600397757783525135099072511850472479412437675482
      .I    #  Get the 392...482nd permutation of the character-list
        s   #  Swap to get the current list of characters
         k  #  And get the index of each character in the permutation
            #  (we sort on those lists of indices)
            # (after which the sorted list is output implicitly as result)
```
[See this 05AB1E tip of mine (section *How to compress large integers?*)](https://codegolf.stackexchange.com/a/166851/52210) to understand why `•f[?θ$Ÿ)*:™ûò0Æì+Ω£µ¥.—g"Ý»θä•` is `3928442642485912187600397757783525135099072511850472479412437675482`. (Note that it's 1 lower than the number used in the Jelly answer, because 05AB1E uses 0-based indexing and Jelly uses 1-based indexing instead. [This number is generated with the `œ¿` Jelly builtin](https://tio.run/##DczVDYRAFADA2nB35w87YFlclzauIBIS6nowBQwqMCYAz/@@AIDJZKN3Zi9J2bz4CWWFVNyZgzVO7rL6W3gQiuZFqVYa3Y7ik9PaYAeKZliOF0RJVlRNN0zLdlzPD8IoTtLsa8qqRg1uu34Yp3lZt/0g5ws).)
[Answer]
# JavaScript (ES6), 119 bytes
```
a=>a.sort((a,b)=>(g=s=>[...s].map(c=>"CcJOoSsUabDdefGghjLlnPpQqrTtuVvXxyABFHIiKkNRYZzEMmWw".search(c)+10))(a)>g(b)||-1)
```
[Try it online!](https://tio.run/##RZLBUtswEIbvPMVOLthT8JRzJ5lJQ6ChgbSFlhaGw8Ze2wqy1khyEnd493RlG3qRZe3q3/0/7Qa36FKran9qOKNDPj7geIKJY@ujCE/W8XgSFWM3njwmSeKekgrrKB1PRrP0asW37ieuzzPKL4tys9TmW/39xd755tf2976dfr74slBfn29@/Hn4O7@u7nejxBHatIzS@MPZxziOMJ4U0Tp@fT09iw@fHo8ARgsPO3TgS4I1OQ@cg1cVOVD/Azu2Q2QhkdFJuHdfkgGtcoJCbSW95QY0VWwcVPhMsAx7zKjPvhOVDTfWUBt0UGS5cWgyqJSW22sqlNzcKV8CGwLnqe5vzk2hlSvh1lsW2Rk3xsNU1yWuyfcpU6loRLPW3SdFgxpqWSvsE2ZordQ1ULXiqd2hzcCxGYKaHYH0JkXZEoSmunYgEx6WW2UKoC2JQq55RxYKS@I9GBBTjZDpFAxDTVxrgpdGkdctWBR4VqxKW40LMlvah8/eYivERJ5shm1A/ay0pgweMC0FoDJKoFdrHBxeS1J4iAu2aXinHpQg78OLCgoOwp57@KWqxIeQzqV@OQ9IPFjKpeP@xoa0Zrh6X1dwNQ/7zbBfhnNZV7DpzmW/XIXMZciX6DAE8lJNV6QK6Dj3AmZhQFUoANErYd7ZX9xIedTKtwN0mX24ZJ13uOUvdD8rUSCY4m3EzhnYwvlK0PpgXyooFzh7O8hcoNKNHL9PrycBKO0o9/bypptML75CJx4WgMJGxgkt3KN1kOMwCGS4KUqgPVZ1mEkp1LmS6c/c6OjpKMnZzkU/cjCeQCqjzpoSzUWURy5xtdiLjuE4jpONvEa/jQ//AA "JavaScript (Node.js) – Try It Online")
[Answer]
# [Retina 0.8.2](https://github.com/m-ender/retina/wiki/The-Language/a950ad7d925ec9316e3e2fb2cf5d49fd15d23e3d), 141 bytes
```
T`CcJ\O\oSsUabD\defGg\hj\L\lnP\pQqrTtuVvXxyABF\HIiKkNRYZz\EMmW\w`Ll
O`\w+
T`Ll`CcJ\O\oSsUabD\defGg\hj\L\lnP\pQqrTtuVvXxyABF\HIiKkNRYZz\EMmW\w
```
[Try it online!](https://tio.run/##pVTbbtswDH3PVxAGBgyYf6LrbemyZVu7ZRcXKFPTtlJZyiS5qffzHUnbaYoN2MOARJLJc45E8diBknH4@OLl@c3j1c3x7UWxLPxl/Izrk6Kk6rwumk2xKKz7UGw//gxXqfty//WhP3p9VryZm7d37z99@/6rOH3XrordzcLOljfF7tXsipf/Kfb4mM0T7DBCagjWFBP4CpJpKYJ5Sux8GDNzzmSzjJf8U7zk9S@pkcqawlaWaPA/m81@ZKuGXJZDZk1FMtfmnuV40ftO49R6p4EW7xSxkAiWlF0zfQ/fR59xJtVRbJLQTa95@6uGctj4Ljjqcz5/Dpjz0X0X0ZU5tMZSzLmo2jiedyY1jHLMiYm2OR9AKE8BYU/gvaru8YemaPEJslNXWxMbuEzB3xEc@84lOLLbBteU@FqHwJid4jCy@AazI2jRAcLW6nSLDi1seWyR6cMjSl5DA0w5Qj7GEHouANqeO9LvMJQQvcsOMvFZVknWRwIuj4v2gYDLGqqGkrsffG9cDXRPzK@s31GAOhA5kCsg2HTsAFVwHrbkt5bgZ2co2R4Csm0CXxafsYsic08PMj0E7CP0LE@hxF6sdGespRK@420T@VKdYXO1a0zqqnfYS59ZTaYzH251sdZRrn4yhXhoiI7Y0Sl7yqikHHHMvM2h9nwm7qnnbrKjcmgMR9GJgyoK/HyaSyNSDoEqLpp3GR7HvEBHEaUKfkAOqrKJKItBNmSth4v9uISLU1lvxvVC4jwuYaNxXi@WglwInrPcTJ33MeXRAVbZk9KkPe2gqtL2FUHs5PzQStd9lbincwemRe49JsNG0c7N33MxaE3q9bMgsJE4hkeYIg/Zqrsi9ZgvCc69rdRd/CQuOG6Qe@5q/d4o4o/EnqM2OPHSOx9kPFnK6Hwamx20vSYOUQ2GXv1wiB8UnP8bV/CDhPTpDI3tAj19NROxNbloI6d9FhHIBJesvG0O2HmMsFZuJ8EcsOW39jJhgBWGCBUOr6UbYih5jh1QRGCuYCmenO/qBugBW37Forxter/8CS7j9b/yvwE "Retina 0.8.2 – Try It Online") Link includes test cases. Explanation: Simply replaces all letters with other letters that are in the desired sort order, then replaces then back after sorting the words into order. Note that Transliterate has several shorthand letters (such as `L` and `l` of course) which need to be quoted in the master list.
[Answer]
# [K (ngn/k)](https://bitbucket.org/ngn/k), 61 bytes
```
{x@<"CcJOoSsUabDdefGghjLlnPpQqrTtuVvXxyABFHIiKkNRYZzEMmWw"?x}
```
[Try it online!](https://tio.run/##RZJBc9MwEIX/yo4vtAeGO2UGSpoWl7QBWih0uGzita1E0rqSnNh0@tvDk@mUiyxLu2/3fdrta9/4w6F@@zh8eFfM1pdLvYnfeXVWSX3RtJuF9V@6rw/hNvU/dj@H8fTj@afSfN5ef/t1/2d@5e72xfvh6fB4NJwUVLypj7D@Ho6Pn14dFWWiPUdKrdBKYiKtKRknkcz/i72G55sSN8VJcdeKJ2tqocbsEDtqT1ac@kiOt0KLvOdKEHqL/I32wcuYFRiC2kf2FTljkbqSxiBtb1JL6oVikg5pc99YE1u6SUEhONPeJzq1XcsrScUJFaeo5CHX2emzZs@WOqyOkT7jEFDPkxvhYtxzqCiqzzdWoxAaQiUNQrmTqQeqYD/oaHxDshOk11b3EqgJAre5azjpAWJS8EqdaGeFHnojyY4UGKwC/KGhPmaZnQz5MwQewQjyEioeM9mtsVYquud1C2TGGzB2K4az4goRGfq5hnV@k39oQBh3paNGs2TSf6Bb4@AAYGtUbucZQ6IgNXpF@EasVbp8WZd0Oc/7zfN@kc@xLmkznWO/WObIRY7HbX5qPEk/ybuMS@sEGKUn4xjQOBlAniyX1yjM1qQxU9ZK6EJtPfHFX2561jJc@2YaoTMlDXS2BMiU/ULbxEw1hSxwzsb2OHuZyyRghS5MnJ7XTzOXYCRXT1QSgwTGhQPdcYhUc35t8do3LcnArsvTBv3JBia6isXx4S8 "K (ngn/k) – Try It Online")
Takes the input as a list of words; returns a list of words.
```
{                                                           }  a function with parameter x
    "CcJOoSsUabDdefGghjLlnPpQqrTtuVvXxyABFHIiKkNRYZzEMmWw"?x   find the indeces of each character of the input words in the list of stroke counts 
   <                                                           grade down
 x@                                                            take the words at the graded down indeces
```
[Answer]
# [Red](http://www.red-lang.org), 162 bytes
```
func[b][forall b[b/1: collect[foreach c b/1[keep index?
find/case"CcJOoSsUabDdefGghjLlnPpQqrTtuVvXxyABFHIiKkNRYZzEMmWw"c]keep
b/1]]sort b forall b[b/1: last b/1]]
```
[Try it online!](https://tio.run/##VZNBc9MwEIXv@RU7uTMdrhxgSpqWlLSBtlCoxwfZXttKZK0ryUnMnw9Prh2GHCRZu3ra/fTiuDg9cJGks/IDncrO5kmWJqU4ZQxlSXbx/gPlYgznIe6yymvKCdvJjrklbQs@fpqVmC9y5Xm@yG838uh/qOyq4PKmqrdrY7@131/dU@h@7n8d@8vP119W@uvu/uH3y5/lXfN8mOdpFJtBNU29uEAZ/V@BUT7QED5NRXhKZoTffBXooDyFmiljpElJQTfsSf8LHMSNkRUi87eDzzVbMrpkqvQe@b10ZLgR66lRO6Z1XKuCx/Qn6Gylc5b7qKQgLJ1XtqBGGxzPuNI4etChJrFMPnA7Hl3aymhf02NwAuGFdDbQpWlrlXEYcy5xqYVqa4YpV1YZajE2asxYKOdwtaWmR2P9QbmCvNgpasQzoT5cDEQUCxtKogJUnPTaVsR7hkRp5MCOKscAEJtAYx34DApWqGVpDdNrpzmYnpwCQod2UVjno8yej3E6OtUDG@TZFaqPwHcaVinoBS8EitpqoG8yNTV5h6z4Htfi8vhcb7QAfoyvGqokSgd5e4NaN@gEvEtUUC8jlkCOS9Q8HtmyMUK353FDt8u43o7rddzHuKHtsI/1ehMz1zEf0ckNeLFuuKaJ@KQMgLOypBsFiCpogB8QrO5RgDI69BN5KZhuxJQDc3zFBhY17Mu2OrvtSkgcXW0AOEQGuEP7SDu4SehaadNh/2zlEJ2OirQ/W8AONg1oLlYTaEUKhOAs5ehZOU@lmhzBVrqqJj6qpo0GxV1Da/gzFBBMKaHWafBMGjGwEs3ffZxTSb5Fc/GT5mk6O/0F "Red – Try It Online")
[Answer]
# [Jelly](https://github.com/DennisMitchell/jelly), 28 [bytes](https://github.com/DennisMitchell/jelly/wiki/Code-page)
```
“ẹ1ʋỴḂỤ$*Ɗż©zk’b4żØẠŒuÞFiⱮµÞ
```
A monadic Link accepting and yielding a list of words (each being a list of characters).
**[Try it online!](https://tio.run/##AWEAnv9qZWxsef//4oCc4bq5McqL4bu04biC4bukJCrGisW8wql6a@KAmWI0xbzDmOG6oMWSdcOeRmnisa7CtcOe/@G4ssOHS///Ik1heSB0aGUgRm9yY2UgYmUgd2l0aCB5b3Ui "Jelly – Try It Online")** Or see the [test-suite](https://tio.run/##RZLPahRBEMZfpVhyUXIRPHkL@SMbV/egEFA81GZqZnrT0z1292QznmIugt48KUjw4EUQQdEQk@Bhl3jwLXZfZP1qEvQy3dNV/VV9v66xWNsul4vD9/Ozn7f@vJ6ff5@fHs3PP67c/P3q8mL66fne4vDd6Pblxezt/OzD5ZtmdrxlFl@/TH/Mjpfz02@rs5cr9xZHn8eLF7/uTE9u6Do9mZ4sl096/UQTjpRKoZHERD6nZCqJZP4HJj5cR/qI9FZ7O6U4siYXKsw@clvfkJXKu0gV7wkNdM@ZIPUR7o99E5y0qsAQ9E1kl1FlLK6OpDC4NjGpJO@EYpIa1zZdYU0s6WEKHoLrvnGJ1mxd8kgS4mso5KBW227ZZceWanwrRnSdQ0A5R1ULE@2EQ0bRO41YH4XQDwr5IKSNdC1QBvfBt8YVJPuC67n1EwlUBIFZbRpGGnDoFJynWnxthZ41RpJtKTBQBdhDQ01UmX050OUgcAtEkJeQcatg94y1ktFj3i1BzDgDxNWI1dh9ZCjzLR929UmuyAAwYv2KCq@SyV9xLk0FB@Cao3K5qRgSBcnRK9LHmBtP2/@@Q9re1P34ej/Qc3yHNO7OsR8MNXOg@YjqS@NFmk6@Ulw@T4DRd2QqBjROBpA7y/0HKMzWpFYp@0zorrd5xxd/2vR6yXDtim6CNjz5QBtDgEzqF9omKtUUVGCLjW1w9m8sk4AVujCxe17XjVyCEa2eqE8MEpgWDrTDIVLO@trifFOUJAdc1Tps0O9sYKCz2Hv6Fw "Jelly – Try It Online").
### How?
```
“...’b4żØẠŒuÞFiⱮµÞ - Link: words
                µÞ - sort (words) by this monadic chain, f(word):
“...’              -   base 250 literal = 12827082404216683880457031718358
     b4            -   in base 4 -> 2201321220213201120101312211011111212121011101113112
        ØẠ         -   alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
       ż           -   zip -> [[2,'A'],[2,'B'],[0,'C'],...,[2,'z']]
            Þ      -   sort by:
          Œu       -     to upper-case -> [[0,'C'],[0,'c'],[0,'J'],...,[3,'w']]
             F     -   flatten -> [0,'C',0,'c',0,'J',...,3,'w']
               Ɱ   -   for each character, c, in word:
              i    -     index (of c) in (that)
```
[Answer]
# [Julia 1.0](http://julialang.org/), ~~93~~ 92 bytes
```
l->sort(l,by=x->findlast.(i for i=x,"CcJOoSsUabDdefGghjLlnPpQqrTtuVvXxyABFHIiKkNRYZzEMmWw"))
```
[Try it online!](https://tio.run/##1ZXLbttGFIb3eooDZUOisgWjOwMy4PiSynXitHHrNkUXI/JQHHk4w8wMLTFF36Loqk/XF3H/M6QcG910W8PmbYbn8p//Mzed0epo9/haBT6stC2NCjErjo/PauVnFI6PP0Sv7TqnBT0tLxZZkWMxp8kr4p0OMZC25LlgG@mBfdDOBnIVXUl4yoK2BdPR4dc5XgjMVMfYhuP5vHRFONzIJqPs@tD59Zzt/OFovkI985BSh/mrF9Ud3Hat4d9OV1hWRUyF7m@GYn/PJ5MKBT@ag5PgfMzMbNUvdgcn@xCHmabKedKL3Wx6VlzduA/hB7U6L7l6s64318a@b7/75G9j9@PDT7v@9PXlN0v97f2773/@@PnibXO3neb5Y2Tpe0HZdBlpqwLFmmmFh9J41A1DlC8LW@fHlSVWprPpXc2WjK6Y1voBe3vXkeFGhGvUPdO1XKuSpzSb3iLAxnXeci8hFCK6LihbUqMN3l3xWuO9rY41OcsUIrdIcWHXRoeaoIpDxDPXYTynpq3ViiPWT5HJIlpr0qlQVhlqcWwUVs@U90hnqenRRb9VvqTgrKwYF5hQDxI5zySFpBKoRPve9ZgBMXzQU2Xclj2tPaNbKRqNdBAiRbCOWnYYJn3qNEfTk1fQyqM9FNQFCfMAf@G086qHRgjPvlS9KHuvjeGSPqqihmTaamjcrJQ09hY7RPRL5wuZyaAMFMbasqG1k5DRDULXukEH0LVC5vpCZIjwcoVasX3Dxji6ejre0NWFXG/G62t5juMNbdJzXF/fyM5r2Y9VGTUm0qXwjcjlqggxlpZ0oyCaiqBlaHn5DomV0bEXlV3J9MaZKumLOykabkfXdp0sdO4IJj6/gZBR@kVsHUTV6CXApdKmw7MnX0aGVqhChzRemzwX0Yhkj7QkBSXgFuXpTvlAlZJps3XdugbnqmnFbIif2oCjSwSa5BPetVxEzEJggD/xO@Srh@TJ8iMSYEWoSDQIG/hDjgGBveX3HCQ6pMY0JwEGWyX@aHEUOzp/D8dtyviCDRl9UlPMP5KwZ4BGQrA@mF8JDQmAAYpEyHMWwgse/g8srIYZiIwDDgLHKEqy@mB8JBmwEBxAwQCAQAJgRH9sT35@8nbyPz/zfKJgT8QXRgaCEh1pfGL@EYfR7KP5k/@fM5Fsdsd7Fv6FQBJbCJG4CQQQYd0zHADC4PYX/k//GkY4nlhItleCAGz/jAoRbpl4@E8sIEFxjxyCwt9//TmdEU5/TPOJfG@yOONcPpWfdZul78eM9vDkE8JPhxdDC1GyODxo5cObdcONfG42mFLWIixNxx345EVjszHzLxkvFiH/6ujXtGdGkRYnxKDUlo//AA "Julia 1.0 – Try It Online")
works with Julia > 1.3
uses as input and output a list of the words
based on [this](https://codegolf.stackexchange.com/a/215292/98541) answer by @Noodle9
edit: replace `collect(x)` with `i for i=x` (-1 byte)
[Answer]
# [Charcoal](https://github.com/somebody1234/Charcoal), ~~72~~ 63 bytes
```
≔⭆⁴⭆⌕Ａ”)“∧·¹]↗¿¤≕τB}VC↘”Ｉι§⭆α⁺ν↧νληＵＭθＥι⌕ηλＷ⁻θυＦ№θ⌊ι⊞υ⌊ιＥυ⭆ι§ηλ
```
[Try it online!](https://tio.run/##VU9Na8MwDL3nV4icZPAgTnbLKRQKhQUCO5YevCSrBY69xfay/vrMTgrtDtLTx5P01Cs591bqdW2co6vBdz@TubbyC185PJIjmaHRGvNSlKIohKgiimhlWUSLebXXxb2fwqraGTmHg3QeiTEOjT@ZYfx9OiQ5dDo4NBze7DLOvXQjGpbIevOK1VkkHuw0STPgN4c0RhySKlQ7rc4WRXoEbMnEZZEUGINPOwMebDB@GyNDU5iSEAZdcArDv2KddVGUx7Q@PL9PD933c6xe1/M5b@Utfpd7NSY42rnfgo/NL@RVwpsN@eWyvvzoPw "Charcoal – Try It Online") Link is to verbose version of code. Partly inspired by @JonathanAllan's answer. Takes input as a list and outputs the sorted words on separate lines. Explanation:
```
≔⭆⁴⭆⌕Ａ”)“∧·¹]↗¿¤≕τB}VC↘”Ｉι§⭆α⁺ν↧νλη
```
The compressed string `”)“∧·¹]↗¿¤≕τB}VC↘”` expands to `2121001131211121220122113321001111210011011133112122` which represents the decremented stroke counts of each letter in the order `AaBbC...Zz`. The NESCA is then calculated by extracting the relevant letters in order of stroke count.
```
ＵＭθＥι⌕ηλ
```
Replace each string with an array of integer offsets into the NESCA.
```
Ｗ⁻θυＦ№θ⌊ι⊞υ⌊ι
```
For each unique word in the list in ascending order, push each occurrence to the sorted list. (`Minus` filters out all matches, so we have to explicitly push the duplicates.)
```
Ｅυ⭆ι§ηλ
```
Restore each integer array to its original string and output each string on its own line.
[Answer]
# [05AB1E](https://github.com/Adriandmen/05AB1E), 26 bytes
```
Σε•ª¯æ·$ÎÐ+MAî+X•4Bžnø{Ssk
```
[Try it online!](https://tio.run/##yy9OTMpM/f//3OJzWx81LDq06tD6w8sObVc53Hd4grav4@F12hFAYROno/vyDu@oDi7O/v8/WikrNScnX0lHQckLmeEPZrhCRbIQIj5QNUAGWCQLpgYo4uMP1e4DNQekOBYA "05AB1E – Try It Online") Beats all other answers.
```
Σε•...•4Bžnø{Ssk  # trimmed program
                  # implicit input...
Σ                 # sorted by...
              sk  # index of...
                  # (implicit) current element in...
 ε                # map over letters of...
                  # (implicit) current element in sort...
              sk  # in...
                  # (implicit) flat...
             S    # list of characters in...
                  # (implicit) each element of...
            {     # sorted list of...
                  # (implicit) all elements of...
  •...•           # 12827082404216683880457031718358...
        B         # in base...
       4          # literal...
           ø      # with each element paired with corresponding element from...
         žn       # "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
                  # implicit output
```
]