Skip to main content
Cipher Visualizers home

Breaking the Four-Square Cipher with Two Key Squares

The four-square cipher hides letter frequencies behind two keyed grids, but it is still a pencil-and-paper cipher. Learn how simulated annealing with quadgram statistics recovers both secret squares from the ciphertext alone, with runnable Python.

Pashalis Laoutaris 14 min read

Try it

Interactive Four-Square Cipher Breaker

🔐 Four-Square Cipher Breaker

A real ciphertext-only attack: simulated annealing over both key squares, scored by English quadgram statistics. No key, no crib.
Enter text and click a button to start!
Key Square 1 (first letters)
Key Square 2 (second letters)
Best decryption so far
Click "Break Cipher" to recover both key squares from the ciphertext alone.

Breaking the Four-Square Cipher with Two Key Squares

Introduction

The four-square cipher encrypts letters two at a time, which smooths out the single-letter frequencies that give a simple substitution away. It uses two keyed 5x5 squares instead of Playfair’s one, so there are two secret keywords to guess, not one. That sounds twice as hard to break. It is not nearly hard enough.

This guide recovers both key squares from the ciphertext alone, with no crib and no known plaintext. The engine is the same one the Playfair breaker uses: simulated annealing that scores a candidate decryption by how much it reads like English, measured with quadgram statistics. The only change is that a four-square key is a pair of squares, so the search edits two grids instead of one. Because the keyspace is now (25!) squared, the search needs a longer message to lock on, but once it has enough text it finds the exact squares.

Table of Contents

Why Two Squares Is Not Twice as Safe

Four-square encryption lays out four 5x5 grids. The top-left and bottom-right hold the plain alphabet in order and are never keyed. The top-right and bottom-left each hold a keyed alphabet, built from a keyword the same way a Playfair square is. To encrypt a pair of plaintext letters, you find the first in the top-left grid and the second in the bottom-right grid. The two ciphertext letters are then read from the other two grids, at the opposite corners of the rectangle those positions form.

The two keyed squares are the whole secret. Recovering them looks like a search over (25!) times (25!) arrangements, a number with fifty digits. Brute force is hopeless, but brute force was never the threat. The weakness is that the cipher is still deterministic and still leaves English structure in the plaintext. A wrong pair of squares decrypts to garbage, a nearly right pair decrypts to nearly English, and that smooth gradient is exactly what a hill-climbing search needs to follow.

Encrypting pairs does help the cipher. It flattens the single-letter frequencies that break a monoalphabetic cipher instantly, so digraph statistics alone are a weak signal, the same problem the Playfair breaker ran into. The fix is the same too. Scoring on quadgrams, four-letter patterns, gives the search a sharp enough signal to climb, even through two squares at once.

The method is simulated annealing, identical in spirit to the Playfair and substitution breakers:

  1. Start from two random squares. Decrypt the ciphertext with them and score the result.
  2. Make a small change. Pick one of the two squares at random and apply a move to it: usually swapping two letters, occasionally swapping or flipping whole rows or columns. The structural moves matter, because single swaps alone get the search stuck near the answer but not at it.
  3. Keep or reject. If the new squares score better, keep them. If worse, keep them anyway with a probability that starts high and cools toward zero, which lets the search escape local peaks early and settle later.
  4. Polish. After annealing, try every single-letter swap in each square and apply the best improving one until neither square improves. This cleans up the last few letters.
  5. Restart. Run the whole thing several times from fresh random squares and keep the best-scoring result, since any one run can stall on a wrong peak.

The score that wins is the one that reads as English. Because the correct decryption scores far above every near miss, a run that finds it is unmistakable.

Interactive Visualizer

The visualizer above runs the real search in your browser. Enter a four-square ciphertext, or use the built-in example, and watch the annealing climb. Both key squares fill in as the search runs, the fit score rises toward the English range, and the decrypted text sharpens from noise into readable English across the restarts.

The search is genuine, so it takes a little time and does not always converge on the very first restart. Each restart begins from fresh random squares, and the best result across all of them is kept. A longer ciphertext converges more reliably, because quadgram statistics need enough text to separate the true squares from a merely plausible-looking pair.

A Worked Example

The example enciphers a long message about the cipher itself under two keyed squares, one from the keyword EXAMPLE and one from KEYWORD. The ciphertext is 706 letters and starts like this:

RBECNQRNTMXMAOFIFYQUAMCIZKKPMOMURBECTEIY...

Running the breaker with eight restarts recovers both squares. The best fit score is the same as the true key’s, and the decryption is a perfect match:

best fit score: -4169.8
recovered key square 1: EXAMPLBCDFGHIKNOQRSTUVWYZ
recovered key square 2: KEYWORDABCFGHILMNPQSTUVXZ
recovered plaintext: THEFOURSQUARECIPHERWASINVENTEDBYTHEFRENCHCRYPTOGRAPHERFELIXDELASTELLEAROUNDTHEENDOFTHENINETEENTH...

Both squares come back exactly as the keywords built them. Across eight restarts from random starts, about three land on this answer and the rest stall at scores hundreds of points worse, near -6400 and below. That gap is the point: the correct decryption is unmistakable, so taking the best restart reliably wins. Now and then a run returns a square with two unconstrained cells swapped, letters the ciphertext never pins down, which decrypts identically. That is the four-square version of the equivalent-key squares the Playfair breaker documents.

Python Implementation

The code reuses the Playfair breaker’s quadgram scoring and move set unchanged. The search state is a pair of squares, and each move edits one of them. The encrypt function exists only to build the demo ciphertext; the attack itself needs only break_four_square.

# four_square_breaker.py
#
# Breaks a four-square cipher by simulated annealing over its TWO keyed squares, scored with English
# quadgram statistics. This is the same engine as the Playfair breaker on this site, with one change:
# a four-square key is a pair of 5x5 squares, not one, so the state is a pair and each move edits one
# of the two. The two plain squares are the fixed standard alphabet and are never searched. Because
# the keyspace is now (25!)^2, the search needs a longer ciphertext than Playfair to lock on.

import math
import random
import re

ALPHA = 'ABCDEFGHIKLMNOPQRSTUVWXYZ'   # 25 letters, I and J share a cell
IDX = {c: i for i, c in enumerate(ALPHA)}

# The quadgram table and scoring are identical to the Playfair breaker: the top 8,000 English
# quadgrams by frequency as a concatenated "CODE+count" string, turned into log-probabilities.
QUADGRAM_DATA = "TION13168375NTHE11234972THER10218035THAT8980536OFTH8132597FTHE8100836THES7717675WITH7627991INTH7261789ATIO7104943OTHE6900574TTHE6553056DTHE6470280INGT6461147ETHE6135216SAND5996705STHE5748611HERE5630500THEC5466071MENT4968019THEM4911484RTHE4862875THEP4458634FROM4361347THIS4344608TING4291641THEI4217321NGTH4162753IONS4045101ANDT4020364ONTH3976144TOTH3911094EDTO3886447THEF3873133THEY3809433HAVE3735139EDTH3699013INGA3675933NDTH3619148THET3597105OULD3545483ORTH3527649EVER3497988THEN3493040IGHT3484797EAND3469701ATTH3465933THEB3427984OVER3423259DING3292159IONA3238994GTHE3206535FORT3183884THEA3166891RING3085444ALLY3058124ANDS2964994EFOR2911043INGS2907686EDIN2898263ANDA2846852THIN2846753OUGH2836766WERE2833510ERTH2823153YEAR2760359WILL2730404THEL2685880SAID2672546HEIR2630839NTER2617394ENTS2616976ECON2602363NING2595587COMP2558839TAND2556578SION2544046TIME2541680OUND2540743FORM2531586NAND2512199LAND2500203THEW2495941KING2486033PORT2481535YTHE2479794HTHE2474333HECO2463161ATED2450352ANDI2435091THED2432283INTE2421896HING2415926NGTO2346029SOME2318831THEE2296331ALSO2272179ENTI2266151ONAL2251550CTIO2238788MORE2226699ANCE2222056EWAS2221574STAT2193875SIDE2178067PART2177409THAN2172227STHA2147392EOFT2146633HESE2140673SARE2136673THEO2122303RAND2121925CENT2100779EDBY2089468THEG2079308PLAY2076384ENCE2070719HICH2066009SING2058168WHIC2056153CONT2051639EVEN2044936AFTE2010597FTER2003476WHEN1998236MBER1995047ESTO1978644INGI1961244ICAL1957590NDER1950266TIVE1949528PRES1942885COMM1940274INGO1932406ABOU1931491IONO1920745STAN1918197HEWA1911604ASTH1910727SFOR1907495IRST1904773INTO1902177ECOM1898652BOUT1883527ESTA1871911DENT1867605WORK1861950HATT1855838ABLE1853875OUNT1851478TOBE1850003REAT1842708INST1834447HEST1826166NDIN1824758DAND1823795ETHA1820247TERS1819470FIRS1819270WOUL1816261BEEN1805388THTH1803360ITHT1802652ESTH1794688HESA1789360SINT1784676ESAN1784502TURE1774845VERS1761482VERY1752004ONOF1741624TWAS1737095RETH1732151YAND1728503STER1721754COUN1720141THEH1713125LING1706713SOFT1704206FORE1703219ENTA1699782STOR1697886CONS1692766TATE1684321ITIO1682234ATHE1679355ITHA1678384ENTH1674269EARS1674228TEDT1672432ATES1671091HEFI1669464ERAL1663096ATER1658140ERIN1647306NATI1646197ERES1646142LIKE1645573RATI1639591EINT1637991NGIN1629144UTTH1626574ANDW1617469ROMT1612822REST1611309ESTI1602216UGHT1598911ERED1592912ANDC1591317ANDH1584076THOU1575289MTHE1570742ASON1557925ECTI1554504EMEN1547678ERAN1542995CALL1542368ERSA1540494WHAT1537708DINT1534038NTIN1533224WASA1521114LATE1517775EREA1502648ALLE1498817DFOR1498486CIAL1496185TOFT1493341UNDE1492863ERSI1490158ANDE1489807ENTO1480948ILLI1474587ERAT1472424ERSO1462656NFOR1460850RENT1450481ESIN1448933SERV1448589RATE1446541STRA1442405BECA1441510CHAN1439212MOST1438813ANDO1434745ANGE1433384ITIS1428100GAME1413581EARE1406547ICAN1405493BACK1405245RECO1403742OMTH1397332HEMA1391989VING1386608IDEN1383820IVER1382092HEPR1379329VENT1378744RESS1376015REAL1373867AREA1371458OINT1369665DTHA1365459STAR1363805HAND1354970EACH1350272ENTE1343108RIES1335429OPLE1323708EROF1318205COME1317743ANDP1315447AINS1313653EDAN1309134INES1308946EPRO1307814ISTH1306902EDON1306416THEU1306228FORA1303370ONLY1303135GAIN1297562ARTI1296805HERS1296238RESE1296098SWIT1294553INGF1294255SPEC1293633ANDM1293038EOPL1292222TTER1290823PEOP1290562THRE1290472DWIT1289963KNOW1288808ERST1288580INAL1288381EMBE1283314INAN1282357SINC1279484ACTI1277906STIN1272931LONG1264155AUSE1263485CAUS1253323VERA1252583ESOF1250232EREN1249439FFIC1246165INGH1245879LINE1244889VERT1244237THRO1239338ROUG1236673YING1235516EASO1234486ANDR1231102IONT1226708LLOW1218687URIN1218178ONAN1217217SWER1216771HIST1212167ROUN1208483CESS1208310BYTH1205765TAIN1203509ETHI1202933SCHO1202417LECT1202081ATIN1200538LAST1199613ONST1199002SNOT1195698YOUR1194475REAS1192018RICA1185515NGAN1180633CHAR1178631ESSI1175244HIGH1170524TORE1169727COND1169174MANY1162938IONI1162499TERT1159942ONTO1157438TFOR1156596TEAM1156191HEMO1153252CTOR1153219HATS1152311TAKE1151598EPAR1146846DERS1145928LATI1145577NAME1145492ORMA1145460ANDF1143755SEAS1141342CHOO1140139UNIT1137054HENE1136900OUTH1136709LLIN1133017TERA1132451FFER1132285HATI1130043EPLA1129006NOTH1128390WELL1124457ALLO1123307TIES1117015DONT1114470TERN1113295PROV1111766INGW1111745RACT1111263SEVE1107565ONSI1107532USIN1103635NESS1101247WHER1093648CHIN1086159LLED1086147ITWA1085399MAKE1084610INGC1083696ENDE1082242SSIO1081298AGAI1080316RESI1080184POIN1078898POLI1077325SIGN1077199EDWI1073054OWER1072176NTOF1069820OUTT1066713CTED1065574DOWN1064961MAND1061275EFIR1060749SHOW1059043EWIT1057301TATI1055867EPRE1055185STRI1050277ARGE1049660HOOL1048757OFFI1046599CREA1046376RFOR1045762ISTO1043207MPLE1042473HECA1042403ECAU1041538ANDB1040570TEST1038285ATTE1037532HELA1037227FERE1036911ATUR1035140LAYE1035020HERA1034185TURN1030325NTHA1029560SENT1029164RTHA1028595METH1023960LTHE1023518APPE1023319COUL1022978SECO1022624WAST1021947USED1020459EASE1018866EWOR1017076ILIT1016662ORET1014721NCLU1014356OUSE1013530ALTH1013296INED1012296UBLI1010170EAST1010081IOUS1008946OMPA1008219OPER1006891ERTO1005645ONTR1005452ANDD1003476HATH1001520HOWE1000854INCL999134OMET998665EING997998EVEL994339HEHA993952STRE992953PERS991550HETH991522BEIN990614SHIP988418TORY986800HOUG986072INCE985675NTOT985616HEWO985283TEDA985062HOSE984347AMER983492ESTE983134MAIN982912EDFO982639ISTE978544HEAR977695ECOU977384PUBL977275TINT976998INGP976226RMAN975603ESTR975031INGL971985CLUD971923LACE970783HEDE965888EARL964297INDI962230CATI958962NDED958694ERIC958584TTLE955989HOUS954540CAME954135LEAS952946ONIN952752ENER950939ONEO948987RSON948659READ947103HEIN946407GAND944505HROU943587WARD941311ESSE940493TERI938496LITY937945EATE937864HREE937263WING935975PLAC934972TART934952ESID933920EXPE933792FORC932108GROU932038HEAD931609CORD931083OWIN930092STOF930023HERI929568BEFO929506ISTI926564PLAN925437HILE924953HATW924847DURI924442SOUT923939TTHA923833ISHE922312WHIL921043DITI920330ESEN919874AMES919873ANDL918600RECE918150HOME916835EDAS916610LESS915764HISS912143NINT911927SFRO911881ODUC910520RODU910277MEAN908002CITY906015ENTT905488ERVI904845OING903926ARTE903798NEOF902480FINA901889ISTR900560ISCO898284ARCH898233ININ896839EALL894740ESAI894501HEBA894451WORL893791MING891799ASSE890585NMEN890406NTED888714NDRE888517WEVE887299INGE887174FOUR886653INGB886547ANIN885369ONSA883984HERO883718SHED883116ERFO881627TERE878104RIGH877847ILLE874214HEPA871438NERA869691SIST869376LEAD869140STRU868622HEDI868517ARDS868032ASED867037IVES866924ITED866837MARK866238ARLY865234ASSI863503MERI863422AREN861675ORLD861177BUTT861155INIS857935OURS857791ONCE857035MEDI854628ATIV853230TSAN851747ENIN851357NEED851094ARES850611ASIN850136ATCH850058MADE847016VERN846808ICAT845339STUD843876DEVE843522LLBE843417PECT843412REDI842726NALL842196EDIT840952HEAL839490BALL837896NNIN837493ULDB837288NGER836784HANG836602GREE836348NCES835273LLTH834676RDIN834494EART834430CTIV834085GOVE832621ERMA832280ELEC832154AMIL829534ESEA829048RIVE827118SCON826453LDBE825826INAT823798NTTO823180TILL822687ITHI821434ENTL820661ENTR820028GOOD818735AINT817185SETH816841TORS816437TWEE814938EMAN813859IONW813535OMIN813476TICA812574INGM812460ALLT811759DHIS811139TEDI810869VISI810762LION810350ETIM810243ERET809649SHOU809516ELEA808794TENT808513SHAV807822ORDE806848ERSE806730NDAN805285VETH804375NTRA803278ASTE802441HEIS801178RIEN798453AVET798089TERM798088ARRI797482ESPE796481GENE794619THEV794492OGRA794344TRAN793747COLL792896RSAN791930ELAT791658EREI791414ILLB791012MISS790619WANT789032VEST788289HEPO787853VIDE787070MONT785313HERT780922DTOT780815OWEV780683SITI780488HEBE779293RITI779061PERI778764OLLE778560SUPP778517COUR775717VICE775699HENA774827ECTE773724NTLY773145ENSE772933HEMI770993MPAN770702STIL770686ERIE769815SEOF768175LEAR767830SONT767667WEEK766068AKIN765701ECHA764682LISH764499BLIC764417ECOR763055ASBE762447TYOF760948NIST760688ISTA760180ONSO759125LOCA758979ITIE758752ETER758521NOFT758122AYIN757940UALL757870LIVE757583LOOK757441ITAL756095PROD756038ORME754828TANT754818THOS754252DIST752794IMES751601NDOF751115LYTH750761REDT749433ISIN749328SONA748704TOCO748071TORI746197REIN746032MEMB745866PECI745611REMA745382ARTO744074TSIN743014ISSI742525SEDT741284BOTH740387NSTA740242ERNA739769HINK739742SURE738814ERSH738421LETO738365TABL738206TOMA737967EHAS737805DIFF737505AYER735828TRAC735394ULAR735297BUIL735108STTH735057ANTS733854HATA732912RAIN732821NEDT732566LITI732516MATE732508LLIO731449YFOR731341HECH731329TALL729176EDAT728973ESSA728671TRIC728513SAME728014PERA727806GHTH727642ORDI725616BUTI725177TREA724789NHIS724574MUCH724183LIST723535ICES723102REVE722117MANA721865RANC721603OURT720508ONES720283EMOR719542MOVE719363TRAT718681SUCH718280ERCE717595TRAI716028BASE714858HEFO714820ARED714432NEVE714087TWIT713369ATOR711887GOIN711292TSOF710558SELF710103HENT709802RECT708410GREA708363NCET707916RENC707316CARE706877THAS706509STRO705635CHAS704941AAND704810OMAN704728VELO704001STED703407TSTH702849OUTO702834ENSI702704RSTO702359ERVE701979RINT701951NDCO701759EFRO701096ASAN700718ALLI699950TTIN699899INCO699198ESHO699063FAMI698400TSTO698247ANOT698205OFFE698190EMAI697613LASS697204EENT697048ETTE696464HISC696400WEST696374ALIT696027DBYT695948HOUL695509ACCO695208NGOF694856OMPL694572RTER692713HISP692441TOGE692377NEAR691815SIVE691197TEND690309INGD689798RTED689287YSTE688393GIVE688253HETO688136ALON687872GEST687831ISIO687715EATH687274OWTH687169CETH687142RANS686028NTRO685530TEDB685496EDHI685448CEOF685271DINA684943AINE684513SCOM684219ISNO683973EFIN683749HELP683380ETOT682693RDER682581AVEA682487ORTA682305RESP682065ILLA681450SOCI680245INDE679690INGR678824RTOF678406FOUN678236ITHO677669ENTU677586HASB677399SSIN676913NDIT676584SHES675771ROMA675502DNOT675469OGET675232HISF675038IELD674589NDSO674425DOES674349RIST673820EUNI673148CHIL673123ROVE672544IESA672491NTTH671847RSIN671269ONSE671204SPRO670834EREC670354SBEE669930MILL668898LYIN668062PPOR668025NTSA667533STON666435HEME665834ERRE665678NWAS665603OMES665537ROFT665504ORES665184USTR664907SALS664813URES664335ARIN664047OLIC663033TMEN662993ECAM662562ROVI662359MINI662322ETWE662278RELA662015HESO661759NGFO661337EIGH661249NSTR660898HEUN660673SONS659537CATE659234ESER657537DUCT657034HEEN656630EYOU656545ASTO656479NORT656235LDIN655806ALAN655785LIFE655334SSES655053HELE654479ERSW654431HISW654125BLET654021ALLA653208STIC652763RALL652414MUNI652270NTHI652141MATI651722ONTI650736STOP650514ITYO650393OPEN650155ARKE648697PERC648243EATT647683ISON647451ITIC646549NSAN646104CHES645447DEDT645362ALIN644376MALL644138ASTA644037ORCE643310UEST642113LOWE641632WEEN640619TRUC640382ANTH640196HASA639774IDER639593AKES639553ITTE639330ACHE638921IVED638877STEM638623DEFE638159DERA637452VEBE637396ULAT637394REPO637338ENAT636759ESAR635982IFIC635759DAYS635317POSI634278IREC633394UMBE632936RNIN632864UNTI631961NDON631437CONC631326STOT631222EPOR631002ORAN630606BECO630597ESSO630148ERNM629840ARET629777TUAL629662RNED629486OMEO629033ENEW628934ANTI628801NDST627935LARG627836ESAM627649OSIT627046OLLO626894UCHA626348EALS626307BERS626197PROG626017ARTH625984OREA625586ANDN625272PING625193RELE625131PROB624899ALLS624816ALRE624686TTHI624455CONF624044RSOF624021INIT623717ROGR623505ERCO623389BETW623197OFHI623129ANDG622983ROAD621871EHAD621626NTAN620660RSTA620558HISI620556TONE620524CHED619847SONE619810FACT619149HEFA618465GFOR617512PASS616913NGWI616865NATE616254WASS615133ATEA614770MINA613582EWHO612266HILD612146SINE611815ELIN610829HETE610582DFRO610220COVE609431ROPE609361SHIN609328AROU608136URRE607758ELLI607612IBLE607595TIST607242ESEC606818RESU606718NGON606646SEAR606266NWIT606036DISC604649EBEE604459ROUP603458EALT603434PROP603355ISSU602442ETUR602388ECEN601985SWHO601020LIGH600834POWE600424ESPO600419RNME600358UPPO599898NTEN599546UCTI599295LOSE598757AVEB598365TIAL596712HESU596262EQUI596037REAR595955AVER595740CANT595734LEAN594971UTIO594951HETR594740TOWN594473DIDN593387SERI593049NEXT592494PPEA592321ORAT592082ITIN591988ACHI591971HELO591813ONIS591787ISTS591520INFO591389NDAR591119PEAR590608FICE590105STEA590051HEGR589612BILI588945ANAN588788EYEA588737PLET588464RTIC588292ENOT588007LEDT587934YINT587681TETH587491GING587248IENC587052ETRA586801LETH586799RAGE586568ICIA586179ALCO586084KETH585491GRAM585066ORTS584799EDIS584693OCAL584293FIEL584146RVIC583992ATHA583331DIRE583326OTHI583095BEST582850NAGE582488PARE581953UNTR581171PEND580659MMUN580335DONE579803OFCO579718UNDA579570HOUT579538OSTA579513ELOP578952ESST578803ORIT578716SSED577989ORTE576910FECT576759OLOG576343TELY575294HESI574677ANTA574381LICA574292NUMB574257OACH573934ECTO573930AINI573839NSIN573485HALL573402SHAR573401OSTO573328ORED573032UTOF572999ECAN572035CAND571919OMMU571858IFFE571656BAND571424ESON571412SYST571183NGRE570944EREW570711SHER570625ANYO570528VETO570047PERF569951CLOS569890NSID569775REDA569674ALIS569344HARD569303GHTS568865EENA568706ORIN568697VIEW568655ATEL568240FICI567700REQU567670PRIN567537NTST567342ENAN567105FOLL567082IEVE566924REAC566680TTEN566545RADI566500NALS566462REAN565691HEBO565620WAYS565425NCEA564788DSTA564211HEHO564144NSOF563939IENT563922ITHE563905SCOR563904ROWN563784ETWO563585CCES563519RITY563421EADE563256TUDE563022NIVE563016IFTH562843REME562827IEST562487EMON561904NGST561479FORS561212ESHA560524YOFT560370NCOM560027OMEN559905EOFF559675ANAG559387ENDI559243NERS559193YTHI559128REPR559125ESIG558994HEYA558933EMIN558676TEMP558667HESH558175VERE557923WASN557705NDHE557190HELI556179HEDA555765CEAN555629ONSH555546RCEN555338SWAS555050TOSE554963NIGH554392DUCE553705EWER553067TCHE552869RSIT552795RTIN552337TERR551842NDIS551715EWIL551437LDRE551140DOFT550746ESHE550355ELIE550056RENO549584ETIN549509TOTA549154ADIN549064SPLA548707RESO548605FHIS547901ERHA547666ELLA546545NCER546117NITY545918ATIS545537TEVE544490ASAL544331IDTH544076NSTO543965RSTH543636NOWN543028FORD542828SWHI542306ISIS541764ECIA541640ISLA541487DERT541302ERIO541138HEYW540174NGLE540045GWIT540000IRED539950CURR539137ERTA538776EDST538088TAGE537994GETH537681IONF537442ERIS537240LOVE537217ILLS536888NDMA536761ENDO536269AYTH536097NDTO536014HISA535943CEPT535713ASSO535629LEVE535272LLEG535019RREN534819AGES534450EMAR533305YARE533257REIS532761CLEA532657ASHI532488IVIN532298NGHI532287REET532212DTOB532193STIM532120DWAS531932EPER531835FORH531791FREE531469NTRY531110NCON530864BERO530355FIND530305AMET529910AIDT529826OFIN529661SWIL529353RCHA528811EONE528428TEDS528390AVIN527360EQUE527196EDFR526567LUDE526495SITY526321CANA525249NITE524689FALL524680REEN524503GETT524210RMIN524099RYIN524040CLAS524035EBUT523892HEGA523693TRAD523663ONTA523656LEFT523517NDHA523320EDUC523189QUES522944SPAR522859NEWS521403OURC521399ANTT521104INGU520925ONTE520524OUTS520420MEOF520300ADER519703HENO519640HETI519585AMON519562DESI519524SAYS519296UNIV519057EISA518892NSTH518306LEOF517776DEST517552NISH517015RKIN516113ICUL516044SPRE515944URNE515797ESWI515421METO515255ENDS515058UILD514896TINU514258TWOR514110EARN514075UTHE513889OLIT513656RIAL513480YERS513394SBUT513296INVE513235MONE513058CTUR512680YONE512476FULL512471BOOK512465THAV512376INTS512073KAND512048EEND511759RONT511369EREP511219NCED510412REOF510357EGAM509288IATE509208OVED508551FEAT508275OPUL508217IALS507957RTAN507655NOTA507131RUCT507127ONEY506971ERMI506812BUSI506684HISM506671ANBE506475HEPL506031ARAN505851NCRE505375ASRE505246OFTE504534REGI504428ITHH503780HATC503721INNI503690MILY503609NTIL502685PULA502347NITI502290RMAT502221ISAN502016ANTE501811DIVI501698KILL501202RETU499787NTON499737IALL499643POSE499635PTIO499235OUTA499056NDWA498491EWHE498473ERWA498093ELAN497944ASWE497160WTHE497101EARC496535ATTA496479HENI496316CAMP496059NTAL495906TYEA495630CULT495548GINA495097DOUT494824ANSA494782ROSS494729ONOM494622ATET494412HEAT494230CIDE494226LEGE494103SHOR494004ITSA493655EGRE493541CKIN493354WRIT493131TELL493083ERWH493001TOFI492945IANS492642STHI492486OCIA492335DECI492308BILL492217INHI491946SULT491862LICE491549SITE491224TERO490857URCH490218ESTS490159NDEN490086CROS490074INNE489627SPER489501ONFO489462NDSA488934NOVE488807ICHA488762HADA488428OHAV488363ISSE488328PANY488193GTHA488170SIBL488087UDEN487921RANT487555BELI486771SOFA486734EMOS486629ESFO486584EHAV486275NSHI486088THEK486061BERT485814ICHI485709ACKS485462YTHA485227ASTR485054FRIE484994SWEL484692NCEO484348OUNC483991GHTE483861RELI483763GEOF483258GINT483227TECH483109TCOM483058ESCO483006ANCI482378UDIN482358AGRE482151POPU482087ESOU481689ENTW480885QUAR480877ECRE480393ONDE479782TOHA479528NGCO479200EREM479070STOC479067MODE478843DCON478565RKET478032HEGO477980TOUR477493SPON476992LEST476691ISAL476616SMAL476460ISRE476190WATE476168SINA476097REVI475930RNAT475915LACK475564APPR475155ORGA474976DRIV474922TOPR474920DATE474314APER473835USET473336RADE473167TOFA473038REFO472874HEDO472580OMMI472488URSE472455CANB472352ANTO472199ANIS472112NWHI472044TROL471945LITT471235TYOU469955TREE469818EALI469684IDEA469624ECTS469585LEIN469566SCAN469373OWED469207AYED469093ROTE468850SWOR468577GANI467582ULDN467562SSTH467440OMME467425NTRE467412IMAT467147CASE466666NDHI466285SDAY465986GRAN465927MUSI465874USES465785OTHA465664LUDI465363URTH465011EARA464953OWNA464738CING464665PTHE464561HESC464430OSED464299DICA464274AVES464085RYAN463765RANG463408THIR462605HAPP462336IONE461817KERS461635RIED461573LLEN461122EHIS461011RMER460965USEO460785YOUN460777USTO460596INDO460003ITHS459537ADDI459494FACE459095RGAN458939CEIV458835SUCC458533MILI458475EWHI458356HAST458242NFRO457971OVID457929URED457321EREL457155MPOR456871DHAV456847AMED456624CORE456507EDIA456300IEND456256EINS456097SOFF456072ORTO456056SLAT455996EFEN455967CONO455953EADI455716INCR455678HEPE455289SATT455214TARY455186ALWA455073OWNT454499ASNO453566PAND453531MMER452757ECUR452476SPEN452185NTAI451695OCAT451691NTIO451664SEDA451645ETOP451534SMAN451409TRON451295HOLD450841NDAL450390CEIN450217HONE449816NEDA449787SEST449771EHEA449695USIC449515AMEN449424SCRI449399UCCE449326SWHE449061ARSA448724ASHE448599LOWI448429TLEA448166HEUS447883HARE447874WASH447597SPIT447392WENT447073HEWE446942HEWI446662AWAY446318ANAL446312BLEM446282IMPO445887FYOU445843OSSI445393TICE445315LLER445292FINI445278IZED445089HATM445074FIVE444490LETE444406NDSE444319GERS444264AMEA443941SIMP443391CHER443301OFIT443146DERE443007ECEI442689DEMO442597BLIS442522NTUR442264NTIA442256EINC442055HESP442013ONGT441999PROF441691STIT441528ERWI441302KTHE441240ACTE441222NTRI441129TRIE440902ALES440788LTHO440513NTOA440284ONCO439986AREC439656AREE439395IONC439152EEVE438898EYAR438387PROC438348IDES438016EPUB438005TCON437581OESN437331EATI437182DHER436824FENS436532DOTH436299REMO436144SLIK435959ANNO435797IDED435794SCOU435781CIEN435633POSS435545ASSA435367NANC435329GHTT435255OPPO435235ITTL434754CONV434361SPOR434067EDIC434015AUGH433471TRAL433392NSTE433020HECI432615FRAN432243VILL432223STOB432188EOFA432092TOST431835WHOW431825DITS431468PPRO431451RONG431187YOUT431078PARK431054BETT431046EOTH430847DPRO430725OREC430677ELLE430199ITCH429868SHEW429717OFAN429290TITU429235EOUT429191SABO429034ASMA428552COMI428403ONNE428324XPER428200SSTA428077USTA428070PLEA427991ECIT427796UNDS427629ARTS427208ORKI426969UTIN426091ANNE425889TICI425648KEEP425390DREN425007TISA424959SHAD424896POST424172ERTI424070PARA423685RACE423605IVEN423134EPRI422946OURN422546BREA422154ICKE422110ASCO421766ONWI421633ONET421487ERNE421211ORSE421044ITYA420752LANT420703EIVE420569HERW420536NGAS420451HEBR420202ORRE419542OBLE419425ARAC419346PPED419006TERW418933RTHI418931OREI418611WASC418583ETIT417985TICS417751YWIT417426RMED417230DRES416803ISED416477TOOK416444ONED416149OCON415326SETO415112HEON415079SSUE414888HEOR414857TTOT414689YWAS414439RYTH414375ETTI413915HERC413786NOTE413739ELAS413720SHIS413582ESCH413382ULTI413330MSEL413255ORKE413156OMPE413135IONB412818CHAM412603RWAS412562QUIR412508ITYT412387ESWE412323ABIL412049ERAG412006TFRO411932HAVI411867LWAY411207ROCE411113CKED410929ETEA410479NCEI410197AVEN410178LOCK410151ORNI410148LYRE410109SOTH410038WASR409708CERT409611REFE409212CANS409134ONWA408658ERHE408636UTHO408559MEST408334OARD408082CHRI407891ITOR407812VERI407719TWIL407658FIRE407467NVES407378HRIS407368ETTH406618DSTO406559ONAT406332SEDO406328CULA406313PONS406231MEIN406221TODE406219AMIN406214BOAR406173RITE405893ASES405640EREF405429IVEA405403ERSC405381HORT405368NALI405202SSHO405165NETH405032NDFO404972TACK404924RERE404615DIAN404489RIAN404320TRIB404176ATIC404114TOHI403993TIRE403984ILDR403935ORMO403807NSON403666TEDF403477ISIT403358STOM403340INHE403330NOMI403283RCHI403265LIEV403151EWIN403032OUNG402978RIOU402856UNDT402688IKET402553EADY402371STAL402188OTTO401923ENED401915TPRO401821OBER401811IESO401775COST401756ANAD401714FFOR401559TONT401512NDAT401357CETO401323LLAS401303LENT401038OAND400964INEA400733DTOA400271HADT400231INSI400129ESIT399777UNTY399709LINT399590FFEC399569SFIR399554INUE399494AGUE399414ORTI399413ARDE399347EMPL398885SEEM398866MERS398777ESUL398741IMPL398723MITT398557TODO398534IDEO398452TEDO398320NTSO398212REHE398141LIES398104INDU397863RESA397731ASTI397729SEDI397722STEN397612FICA397498RRIE397410LLOF397388ONWH397259OWNS397138ACCE397069DSAN396674FTEN396563OPRO396521SSUC396479RWIT396460ATIT396265NSTI396148NCOU395931TANC395823SHEA395798IVEL395516AGEO395436TALI395125TODA395002NPRO394922DTOS394643ICLE394588ECAR394151EONT394123ETHR393962TOAN393950ACTU393744HANT393728ESWH393689LESA393554DETH393521ULDH393176OTAL393165WASI392891HIRD392783ERPR392741LLAN392680RETO392364ESNO392271NGAT392154DSOF391866ANST391802LEAG391576HITE391574STAB391418LDER391402ONEW391250LIAN391250RICE391134RICT391099AYBE391023EASI391022NOTT390751ENDA390691OWNE390383PANI390345THOR390157APPL390116GRAD389973YHAV389753OMAK389749DCOM389512DEAL389332INMA389040DISA389011REWA388993SECU388987EFER388254EARO388232INSO388193HARA388069ENTF388062IMPR387321SINS387282BANK387277EARI387165PROM386873ANEW386816HISB386674EONL386413NNER386328VICT386323IATI386161ONSU385955TITI385720ERBE385697EFOU385207MOUN385169NYOU384963HEBU384914OMEA384909FOOT384773RSHI384687NDUS384259NDPR384026DTHI384020SPRI384002SALL383967HERN383854CHIS383646HAMP383267NDLE382966BATT382653ILDI382644CAST382574PROT382433TSTA382419EUSE382370ALST382236ROBL382207ESCA382047GHTO381889RSAR381737TSHE381687MEET381616OCOM381511VOTE381359NGIT381076RSHA381064AWAR380976ADMI380910IVET380749COLO380698EAVE380462VARI380285BETH380223ACTO380058OSTE379920HISO379759NDAY379714EWOU379565EDOU379383TOHE378743SSIS378629NGSO378143CHTH377969HALF377968ATHI377905ORIG377833URAL377805OOKI377690EGRO377688LFOR377653TEIN377584MINE377560EDAL377542INAS377483TRES377372ARTY377128ALMO376791HEHE376760OLVE376740ERON376740HENH376618SOUR376538EGAN376527DENC376311RAVE376218LDHA376206FILM375524UNTE375409NENT375393DEAT375267PRIS375185EPEN375047GROW374945SSIB374589HERM374209SAPP374193TYAN373941NITS373921ENCO373751COAC373622SUND373573TTAC373245PAST373192AMPL372943ISHA372745ACOM372613UTIT372341ARDI372305NDIA372182EANS372174FORW371997IGNE371781WASO371610HERP371601LEME371600PITA371596SCAR371411ETOW371386LYTO371318PERT371308TWOU371119SYOU371065CCOR370873ENHE370806UETO370665EINA370626YCON370592ROOM370482NDWH370206OVEM370123NDWI370008TESA369961ONAS369902TERF369878CESA369597TEDW369567SCEN369499SSAI369354OURE369316ONDI369263HISD369210RTAI368447RHIS368427TORA368380HEAN368332LLYA368321SETT368281RCON367930OMER367592RACK367585WASP366930ORTU366644NGLI366513BODY366373ASAS366178EAMS366161REDE366107RAFT366052NTAT365984GHTI365848REAK365266NGSA365085ISST365028ORAL364188DATT364161ODAY364087IGIN364082TOME363989EXAM363558RIGI363498ROTH363468TBAL363434ERAS363390ORDS363275GRES363107EDHE362711ANCH362653HERF362612TOFF362503NEST362478ENOU362215TERB361951IMIN361870IMET361839UART361827ACKT361765EATU361650AINA361606MANC361172HATE361154HINT361054ERSS360542GHTA360424TERC360202FUND359933ONEA359923OSET359134NDAS359015UNDI359007ETOS358968ARLI358896MATT358836NICA358662ILES358289ISHI358254LEGA358079AREP358038TERP358021ESOM358001SHEL357938EAGU357834RALI357803CTIN357690HISR357560GHER357404UMAN357283OMMO357272EDOF357269UIRE357191FIGH357154ALAR357006ITER356891RCOM356779EIND356498INGG356415AGEN356414VEDT356317TARE356117NONE355940EMOV355678TTIM355578ETHO355561TELE355405OROF355184YOUC355161NDDE354944ALOT354690ANYT354581ICTI354564RETA354333EENS354096EREH353968AGED353597INAR353566ISCA353476ACHA353445ERNO353136PREV353132SCRE353014OBEA352921RINC352901HEEX352554NDSH352340URNA352264ECUT352177NDMO352148ERYO351874PLOY351864ENTC351671SCHA351662ASKE351621MANS351518REPL351483EREG351081ERGE351044TINA351002OMIC350951TECT350926ORKS350820MUST350628ARRE350449EITH350426ITLE350409FTHI350369EEXP350156MARI350042ORNE349990CTIC349973ESAL349953EADO349924SOLD349794PLES349776HEEA349739REPU349695MONG349594TALS349586RESH349393ENOR349338OOKS349295BLES348932LAIN348459AVEL348430GION348226TALK348041OFRE347929ITSE347926HEBI347767ITAR347612CHIE347401AMPI347401REPA347286ATHO347209ELLS346958SESS346575ITST346506STIO346460DHIM346455TERH346357HECL346297TOWA346166OTIN345936ISMA345895DERI345873ESCR345815SICA345801HASE345770GHIS345635SUAL345557OOLS345451HISL345410SSEN345286WASB345255SSTO345239LYBE345075ECHN344749ACON344630ILED344595PMEN344436IONP344375THOF344181DESP344160NDBE344088DEDI343953ENCY343877RRES343587HILL343363INWH343331ONGE343287EXPL343276WHIT343063PENS342955OKIN342824FITS342524DONA342395DASA342059ESMA341876MAYB341875WHOS341807ONDA341764EDCO341739NAST341541RIBU341504TEAC341353ANIM341239XPEC341164ORHI340945EDAY340880TSAR340404EWAY340389ERAC340371INSA340170ARAT340145ACED339938NDWE339914GOAL339678ATAL339575PRIC339527EWAR339384RYOF339369HEVI339090OCKE339081NHER339076SCAL338964UREA338944IDNT338880HEYE338860ORST338854GTOT338731YARD338655EACT338558QUAL338503WOOD338238METI338226LYAN338145NGHE337826DAYA337675OUSL337636CIAT337565EEDS337493VEAN337403ERIT337352SANA337272EEDT337217REDO337017FORI336888HECR336747STOS336656UARY336200CTER336060ICTO335964ESAS335908MPET335666INGN335556MMON335233HATP335213CEST335208CARR335062ATAN334947ITHM334691EDSO334623WASF334542ATLE334424ACKE334322ISMO334248AROL334229REED334160WASD334008ESHI333973USTI333926INSU333890ITES333817CTTH333715OLDE333679TINC333522ELEV333502ECOL333470RTIS333409VEDI333371UALI333338LCOM333335UPER333282VATI333117ITAN333103ABLY332878ETRI332594ARDT332276LCON332275SEIN332156LOFT332127INCI332035RISE331811REER331808EDER331731RPRO331668INRE331232FEEL331227AILA331215ESPI331141MARC331045LEDA330916EURO330845LLYT330705HANA330610FATH330580LEAV330527PION330490INCH330265EORG330153RIVA329974ENGL329946HOPE329823ARIS329818OLDI329567SEAN329559EDUP329401NEAN329334ARNE329135TOLE329115MESA329041NSIV328814MPRO328697ANDU328620HADB328619IWAS328540NDCA328500ONMA328366MIGH328270NION328245ONFI328045INTR327920HASS327876APRO327814EBAC327781LAYI327760DDIT327697AREF327668DUST327407IBUT327287APAR327257EBAL327170EYHA327134DGET327110ROLL326987NTHO326978HEHI326930NESE326889OSTS326825ANIE326821ACES326735ARTM326679ATTL326476SAST326454VEME326192ENGE326049NGES325969NCHA325911AMAN325818HIND325792AKER325699LREA325606EHOU325414ERIA325393HOUR325109SELE325081HERH325031RDAY325020STRY324944ECAL324854YWER324689ANDY324689DALL324570TSHO324492BUTA324437ERSP323987ERCA323917LLAR323689INOR323683CLAI323468SONG323407AGER323394OUTI323381WHOH323265LITA323235ANAT323124VEDA323102EHER322712ELES322629APRI322617CKET322611BLAC322190EDES322172SESA322131SNOW321948REES321850ANCO321767TOIN321721ATWA321627IFYO321582AYTO321421REAM321253EMIS321144CANC320964WAYT320960TEAN320953STOO320926ORSA320849MAKI320837DYOU320833ADES320742AREO320663EAPP320569EGIN320460NCHE320135VIOU319969OSEE319953ISPR319894YCOM319731ADBE319588SUPE319572NARE319357NSWE319204ENEX319193EGRA319144LOGY319120NEDI319046PHON318931BEGI318833URET318483ONDO318407EFFE318386ENCH318369CTUA318349SALE318326DELI318223RCES318201TITL318186ONVE318169FRON318093HENS318070BRIT318023WORD317975FORP317936CHOF317778SMOR317650ENTB317558ASSU317546ORYO317505HTER317296NKIN317251LIMI317140ONOR317114HISH317075OFMA316963BUTW316856EMPT316840ECLA316801REWE316759SSAN316743ALOF316655USAN316628IESI316542ERRI316489HERB316423SSOC316304ALTE316298LLST316293OLLA316250SITS316070ECHI315607HEYH315530WIDE315506NGAR315377ISFA315289CKTO315263RAIS315200EBEC314982VEIN314955EPEO314893EINF314832HEOT314825BEGA314814AKEA314747CLIN314644ELLO314513MPLO314497ISHO314476ALIF314237CHUR314180CADE314149AREL313918GTON313862MEON313641HISE313578GRAP313558DEDA313549IFIE313546NOTB313368WEAR313248ESSU313014ALIA312946ERMO312852OWAS312820EDGE312686RANK311983ONON311982NALA311905LENG311874CIPA311796HOWA311590NWHO311559ITUT311551ROMI311520LYCO311351DBEE311302NTSI311253ADTO311104THHI311024AMOU310658TENS310550AYST310550ERUN310542YFRO310391ESTU310267VEAL310190NGAL310000ADTH309726OPLA309274TYTO309267LOGI309254AKEN309214ACKA309144NDNO309028OVIN309015UNIO308966ORIE308959ATWE308904INSE308759ERSF308598ATRI308545EDED308508EROU308461MOTH308424ONSW308411ITYI308202SSOM307986ASHA307939REDB307865WARE307850GULA307791NIOR307713LERS307682ESEE307636HATD307461EGUL307079ASAR306930ONFE306818EFAC306616GATI306607ELON306562EXTE306381SEEN306380CLUB306293RATH306117DBYA306117TOUT306102DEPA305920MERC305849RAPH305731ISDE305695EPOS305691HANC305654OCTO305615DESC305562VELY305538HETA305525DWHE305515TEOF305417OUSA305255LSAN305253PPEN305219MINU305127MANI304985DSIN304746QUEN304614RMOR304587CEDT304543GERM304484RSQU304283STHR304163ENTP304158YORK304056UTES303885MOVI303856DATA303755LPRO303754AKET303733GINE303708ISSO303662TEAD303620ETAL303510TIMA303427MFOR303420OREP303367RIDA303284SHOT303221TURA303049RTME302967ETOB302939EPAS302924DOFF302658HATO302571FORN302548EETI302468REBE302422SEAT302400ALFO302172ASAC302160BAMA302152NGAB302113THAD302101AUST302019OSTI301930OCES301866STCO301520OFAL301473ONAR301388RIME301123DUCA301121IESW300943URAN300922SHOP300844TCAN300737VOLV300726UCAT300706EETH300672BERA300670PHIL300305HURC300272ONGR300022TCHA300015TONA299962TORO299929MMIT299799OTOF299631ANSW299418EDAR299314ESDA299185EIST299132TISH299115SONW299072LAIM299014ISAS298921ALEN298829TCHI298827GNED298789CALI298754HINE298504IGNI298476TWHE298442ALSA298296HOLE298278NOLO298211TPLA298099ATEO298023ONGS297884IZAT297865UMEN297855ASTY297714RICH297424WERS297418AMPA297344RICK297304INKI297193ZATI297096DMAN297009RYEA297004ANES296998REGU296968EANI296658ARSO296369TOLD296331HIMS296261EEAR296261DINS296259ARIO296255ALBU296038ERBA295924SCHE295879SQUO295511HEYC295475ORGE295392EEDE295325RTUN295208AFEW295180ITSO295107NGPR295055NSAI294995HARG294974INTA294917YSTA294817EBAN294815CHAL294809OODS294470RKED294383UTTO294170DTHR294124ORSO294082ILLH294056LOST293885IVAL293650PACE293555ASAP293542ACKI293532YPRO293478WIND293468ROMO293377NGFR293332ATRE293262DEPE293191HEFR293183ROCK293182EMAT293101USLY292920DSOM292910SSOF292860FAIR292780ASTS292644SLAN292455CONN292434ANSI292403ENAM292377NEWY292253AYAN292248RSTT292246INAD292062EOFH292041BUTH291922SBEC291865DARE291677MMEN291493ECAS291475NEIN291368MPIO291252SHAN290981TCOU290969EQUA290663UNCH290616TATT290530ASST290519UDGE290478GEAN290392RGES290315HOWT290299OWAR290270HERD290118EVIS290118HUMA290066MEMO290011STYE289907DPLA289899ESIS289783UILT289755EGIO289715WONT289684SENS289657SISA289561HELD289446ETOA289254EDRE289237OURA288882CRED288828USSI288463NOTI288450WALK288388DTOH288370ESAT288368TSON288152OTBE288120SOFS287914OUBL287899NTHS287818OLUT287795NMAR287683VALU287621NTIS287478VESA287425EREB287421ARIA287392SATI287306MAGE287274INTI287232DTOP287230DSTH287190EGEN287126GEOR287029HOHA287002STEP286995UCED286943LLIA286924ETRE286916SOVE286911REDU286782RPRI286744ATEI286579NGED286352FIED286305ESFR286244IGHE286186XAMP286156EMED286107IEDT286067SYEA286059OTES285999HEFE285992ISFI285983PENE285977NGLA285830AUTH285797ANEX285754PORA285720EYWE285559UBLE285444ETAI285420TOPA285339WINN285289PRIM285234RIOR285195LOPE285100HEAS285099ESUP284991ALIZ284944ORCO284834ASPR284811ORWA284641IDIN284637SONL284549NALT284524ETOF284482STAK284420ICER284380NOUG284319NOFF284120ONEI283962EISS283936RPOR283929GENC283743MEAS283639THAL283512ANKS283478NATU283335HANI283252CARD283210ASHO283090ROFE283069ENGI282909ERRO282831LTER282757ITTH282727LABO282705MEDA282520GENT282491NDOT282322WEHA282284WOME282269UATI282219BEAT281957CALS281808EDEV281514DTOC281360ICEA281123ICHW280991TIFI280832FORG280801IVAT280796EABO280793ANIZ280620GGES280533EXTR280453IONH280357PPOS280311PPIN280291ASTT280170LEDI280100NGMA280023TITS280011EOVE280002EMEM279936STST279860ROLE279852LVES279732PPLI279701ASFO279591VENI279516NTCO279432TOMO279414LDTH279406TSWH279398VOLU279241OURI279221DSHE279149ESBE279054ASUR278999ONHI278989SOWN278980INVO278952KIND278921TLES278912LIAM278792NTAR278787NTFO278779NWHE278754BERE278711SHAS278608PETI278506STOA278495CRAT278392ASPE278388INUT278353TSHA278317TOFO278317URCE278315VEHI278054PLAI278024ITTO277976IGHS277890NVOL277773OCRA277769ISAP277760EAME277730ONEN277721ONHA277720EELE277666GARD277657ATEN277598HEAC277473EBRA277469ARST277357DISP277343RUNN277223STTO277026ECES276980UROP276927ERVA276801EPOL276794EXCE276745OLIN276716ONGA276600AYOF276544EWYO276432LTUR276339PLEW276305DREA276292ILLT276280ADDE276275CORP276204LLYI276177ATCO276170ETOR276099RSWH276093TRYI276036LEFO275892UPTO275890NSHE275828TYIN275654RGEN275280IVID275217OFOR275030SUMM275027HOFT274951FORB274890SSUR274876RECA274827AGEA274650NGIS274601ATSH274369ELIG274344ITAT274060MPER274045OFFA273953EDEC273914RGET273864PENT273795UNCE273712REMI273606CITI273404INET273368NALC273340RVED273250ERSU273214NGOU273086NSIS273048STSE272963LIZE272889ROUT272799NDCH272712NSFO272668LYON272613NIES272610DABO272597ACKO272594HOST272351TYLE272336DIED272275OTTH271954EAGE271949SRES271909LARS271757HEEL271698UREO271671ONRE271626NUTE271565NSER271506IMIT271490NGEL271434NPAR271433SPAC271356PAIN271215AILE271146ECTR271098ARIE271040OSIN270844DMIN270790PEAK270741NATT270737EHIG270717NPLA270559ATMA270465EYRE270332YOFF270275ALTO270234OUCA270151FESS270049IANA269904STSA269811WYOR269804DOUB269776MASS269753NTSW269748TACT269645ERDE269605VAIL269603ALPR269603ETAN269490LLHA269165PRAC269028AFOR268967LTIM268964MIND268851OBAM268690EDID268647USUA268616NGSI268565SUBS268318SECT268306ONFR268185SAGE268118TYPE268030EBES267987NOWT267836EITS267782OYOU267780REDS267710ADEA267632DEFI267596GUES267572ANAR267437DAVI267348ESUR267341NVER267337HEPU267281LETT267114EBAS267097HETW267065RAIL266955ETOO266927ISPA266919ROPO266911AREI266811REGA266740LLEC266740ELIV266702RETI266650RTHO266627LTHA266608ESSF266568MESS266545IRON266506OLON266489YWHE266450IDNO266421ATWO266311ODEL266107RDAN265971TSCO265873DVAN265871AREM265853ATEM265787USEI265690TBUT265595ERYT265574OVIE265504ACRO265372IGNA265359LLYS265300INFA265106TSFO265096OFHE265062INNO265013HEYR264935RPLA264830THOM264749HHIS264596WHOL264578TONS264405ATAR264364IDET264157NSUR263926RWHO263834HINA263704SPEA263599OFST263571TRIA263448NEWH263391MART263340DWAR263339SAVE263316HWAS263168ONSC263108EPTI262983SMAR262907SONI262861ORPO262787UCAN262755EFUL262752MICH262710TICU262697ERTE262494EDAB262415TAIL262392ERCH262388BORN262281SELL262242IALI262218WASE262185INER261892MOTI261731EFRE261727EBRI261580TIVI261396TINE261346INCA261343RYTO261304OFWH261295AYSA261183LOTO261100DMOR260834ARDA260754BRIN260725MOND260654YOUA260596USTH260441WATC260399ESET260393ONGW260271RNAL260254ATTO260202EASS260073OICE259971PLIC259959RGER259894EGOV259536ETOU259527SEDB259416HIMT259397ECID259347EASU259255ULTU259231TOAS259215IMEA259210HERU259133OFAR259099OHIS258883NHAS258792SWOU258661SREA258552GETS258413STAG258349RISO258319ROBA258272ARRA258225WALL258170CALC258122INFL258046NDSI258013EDEA258007OREM257983HTIN257885IMSE257839ADOF257818RRED257788HEAV257705MARR257628NTOR257599VATE257533ALSE257508EDBE257505CRIT257493ANON257460TSOM257332FEDE257304ATEC257225OWOR257214SOFC257022RSIO256950NYTH256784TWHI256740OPME256671RARE256631EOFS256626EGIS256482NGHA256326TOAC256165DECE256011ECIS255994MATC255975ILAB255929ONME255867EALE255795SREC255790SPIR255789EBAT255739HECE255728OFES255699SAFE255693NSAR255651HAIR255629ADVA255615OTAK255494ISBE255412SAGO255292SANE255063DDLE255040BLEA254959HIMA254918ETIC254811NCIA254800ESNT254744ILET254739HATR254705UTHI254599TUNI254434NCHI254310ATST254221ITHC254016TOGO253916AVAI253697SOON253645EASA253573DETE253529LOPM253497CELL253462MEDT253460DOIN253341LANE253294RWAR253233LAYS253044STBE252857TRAV252745ASDE252744SQUA252712OWIT252624RIBE252607KETS252334ONIT252265RSTR252255ICHH252135NEWA252134TPER252113SDIS252113RATO252059OSSE252026BEHI251945OPIN251940IDON251916RIOD251818EEKS251800SSHE251757ERPA251705ESRE251679LLCO251653ICIP251647DTOD251571COMB251319HTHA251159ISPO251134NOTS251133UTSI251078STAF251063EIRS251029TTRA250747PICK250741HIPS250593TNOT250512SSTI250500ONER250496BRAN250469VERH250320TSID250211EMAD250144UNCI250076NBUT250068DBEC250054LUTI249966NGSE249933YOUW249764UARE249752ONBE249750EEME249736NGUP249656TTEM249652NTAG249552LABL249528TERD249520EKIN249442DUET249343NCIL249321FORF249251CIES249119NDID249107INSP248971TTOB248962HEYD248962RYON248958OOKA248946IETY248913ORMI248827HEDU248812TTED248773SREP248770ENRE248717ADIT248703UNNI248697TOPE248556ETRO248502DTOR248404TRIP248296NDDI248169LESO248138UTHA248098HEDT248089APAN248089SCIE248029RALS247974IDGE247943IRES247866EGAL247833EIMP247628OPPE247597AISE247591EFEA247582OMMA247581SPEE247534EMER247481ANSF247464IVIS247386NTWA247348GETA247326LMOS247302OUTE247174TOSA247083EOPE247079EMOC247035ERIG246918EDMA246897PATI246845RULE246819FAIL246796UENC246695ERTY246572TBEC246569NDRA246546OTED246446ELVE246344DIES246336RISI246216LOSS246160HERR246120ARRY246084IGAT246030IVEI246012ISWA245857ONCA245800HISY245623ROUS245484ITYS245364STOL245110NDFI245091NTOS245090GIST245046EVIC245006NTBE244966EGOT244931ATEG244850DEOF244719ITHP244695TEDH244661FORO244528NNEC244381EAGA244294WINT244230RCHE244182ONOT244159KFOR244020PTED243974GFRO243973GOLD243783CUTI243719HEOP243716DINC243684ISCU243619ERAR243589DAST243489SEQU243480TMAN243414EREV243386MIST243317ELOW243250SASS243123IOND243104UPTH243097EPTE243093FAST242987TTOM242881LEWI242828IDAY242815AIDH242815GETO242746IANC242530CKER242484LSTA242448NCEW242401STOD241997ADEM241984RMAL241839INDA241674REGO241671RETR241669TSWI241530ESPR241421MOCR241390PITE241232DUAL241122HEDR241062NGMO240991SALO240967SUSE240917EDWH240889ENSO240811RSWI240771OVET240750ANSP240749CANN240734GATE240723NGWH240722EDNE240699EMUS240690ASAT240642SIAN240597ERCI240578ISAT240567EHIN240538SSER240449BELO240422OTEC240399UMME240384ITUA240383FOOD240365UENT240306SEXP240288NGCA240202OUCH240128LANG240083IAND240076CISI239965EISN239897ONPR239880SSON239781OLEA239713INFR239698EMIL239663REFU239602LOWS239490NABL239446ANWH239435RYOU239380CELE239377GUAR239311HSCH239233OSER239156HASN239156DBUT239062SREL239049CURI238919ERHI238655OPTI238489ACHO238456NTIT238438LECO238325BUTE238321ILAR238254REEM238189HECU238083ANDK238078MILA238066NDPA238050OFFT238038YHAS237959GIRL237943FINE237743GOFT237740NDEV237727YCOU237626EGAT237607RPAR237584ORDA237581IKEL237476SENA237272DPER237060HEMU236663EBEL236641DAMA236533ULLY236460MAST236360IDAT236359CALA236320MILE236266RONE236227NONT236220UTUR236189DAYT236144FORY236135LSOA236124ROLD236110HATB235929RDED235880ROMH235835ATSA235819IKEA235812ITSS235801QUIT235718ITIA235627RETT235593INDS235537THCA235524ANGU235414ALDE235336RENA235249LSOF235204EBRO235140TAFF235127NGWA235118URIT234963GOUT234880DHAS234688ELOC234560RFRO234510OFPR234491SSOR234449ISPL234439ESOR234411PRIV234259RSHE234192YWIL234093AGIN234090RELY234083TOPL234041ISES233970BLEF233950ERLA233916LONE233901ECTA233843ONHE233772RTOT233761KEDT233727RIDE233694ENDT233655RTRA233615HEYS233553MARY233443TREM233349ERDA233233OAST233173HEGE233114NDTR233113ADAN233085INEN233042SHEH232991EATS232987NTWO232940TALO232720STMA232655ONIC232573LARE232553REWI232520ASIT232485ADED232446NGBE232439LSON232381UATE232368OBEC232367NDSU232315CAPT232304LSIN232286AYEA232274OMIS232133ISWI232047AMEO231992IANT231976DTOM231894TOCA231796ALMA231787ASAM231786FTHA231745ERSB231656RLIN231580CRIM231552ESTT231547ESPA231534SONO231521UNTA231508ECTT231478EANT231426ENTM231391IMIL231243FURT231177ELYT231140LOYE231118EIRC230987ABLI230978ENSU230955SCAP230941SEWH230921ENSA230915ISYE230914STAY230883IMEN230869ASTW230812STYL230772INLA230720SPOS230627EAMO230546DDED230544ORIA230469ROFI230443SOUN230373WASM230344DOVE230335ANEN230249ENAS230224NOFA230191ISAB230189CORR230178PETE230044IONM229994DWOR229977OCCU229935NOUN229917OREL229911SIMI229854SSEE229840TONI229813EDMO229775NLYT229661NNOT229643RENE229601NGDO229486INAC229484OTBA229457OSES229431NDLA229425TTOS229418EIRO229402NINC229395HEAP229227CEME229208HATY229206HELL229130AMEI228989NSTT228889LEGI228797ANDV228771NCTI228762ERLI228757EHEL228741NISA228739SFUL228625AREG228588SUME228517ERME228485NIND228425DONO228422VERB228410NSHA228400IBER228390YCAN228257RREC228199NOWI228166ERWO228154TAKI228083CKAN227962ASAB227934NTAC227879LLYW227827LANC227823NGAG227801FERR227746CHAI227638RSWE227600NSOM227500TEMS227491TIAN227490DEAN227309RIDG227299TOPO227255CLES227250XTEN227242EWAN227068FUTU227001EAUT226993TTHR226877DCHA226670HEAM226600ARSH226597UTAN226593ENEE226543ENIT226540PWIT226534CRET226466TINS226452FISH226445TSEE226442NDOW226442EVOL226372ETOC226226RUSS226221HOWS226203LAKE226117ANOF226114TABO226085NSHO226076HISN226029NESA226002TLAN225988NDOU225973TSEA225930ERRA225922REIG225854NEDB225752GALL225751AMAT225735PAPE225584NINS225479RAMA225440SORT225416EOFC225403GEME225388RUST225306HFOR225239SSTR225156ESOL225009BENE224994NMAN224979MERG224912REON224900OONE224830NECT224714WAND224676ASOF224670NADD224587OFCA224562EADS224537ESAY224516PRET224465ANNI224447SOFP224375HEKI224326TAST224237STHO224232ERFI224199PLEO224188EVIO224173NTOW224045AGET224041PPER224038APIT223994NYOF223918RWHE223798ICIN223705YSHO223699ARYA223677OUTW223673FERS223670RDSA223638EDPR223609OLDS223536EXIS223528RKER223438UTER223359EGAR223318NGBA223300YHAD223298EALO223222REND223219EDSE223213NTOP223133MONS223094SEPT222894DSON222872RSEA222843GHTB222752OFPE222672UPON222629ETOD222617NSIO222500IMAG222487LITE222416LEDO222406EINV222375NIFI222357ANYS222186CKOF222129HORI222004EHOL221992NANT221980HEFU221972OMAT221947DANC221947ASEA221907GTHI221775EVIE221695OUST221638BROT221635IERS221443AWAS221377AGOO221333ONDS221168ORIS221143CHWA221125NCEN221039LYST220845LYFO220844MOUS220747ERER220707RARY220700MPAI220700ROSE220643ITWI220603ESTM220597EBET220567EWHA220526VINC220505STOH220470RATT220456NDIV220453LDNO220440VENU220434SENI220398OSPE220374ELSE220354MPAR220305SWEE220288ATTR220273CUST220183ONSF220141OMPO220122ERFR220086HANN220066RNAM220059TICL220054IVIT219966SKIN219955EDIF219920BASI219799MTHA219769DWHI219727ITIV219695CREE219692NINE219666NGEN219662METE219522SURV219390OOTB219354ATON219294MMAN219288NSWI219281FARM219228ROMS219109SFOU219076ICEO219071NORM219056VERW219053ENON219049HEVE218973OFCH218905FAND218848IFOR218829NDHO218799UDIE218688PERM218667LEVI218520EEPI218497GHSC218319NSIT218118OMTO218098SAFT218018ENTD217955EORI217926DPRE217906YOUH217726CESO217642RESC217633ENST217558EENC217520NDWO217350LAGE217348NDPO217347SSIV217315ODES217281NDLI217224DERO217199SASA217180TENC217170BROA217147OREX217103EROR216974TURY216966EANA216966RGIN216878LYHA216869NATO216866WNTO216829TONL216761SANI216727GUST216709CIFI216698ISAC216690KEDA216676UICK216635DICT216574LEDB216566OMBI216514RWOR216388TUDI216373ACOU216371CHNO216343OFSE216324CAPI216317TROU216316INGY216016LDNT215934XIST215847HERL215846DIAT215784MESI215601ASPA215561ARER215557APLA215490LIER215446IDDL215440NGAM215404IHAV215350LINA215331URDA215268EDRA215212DEMA215189ATTI215044LVED214968NTWI214920MINT214793RPER214788STAS214705ELIK214649WNAS214571LWIT214473EOFM214446AFRI214321DATI214175ISLI214144EEAS214063ABOR214053QUIC214051EBIG214012HEMS214006ILIN213926FTHO213921NORD213899TTOR213897ADET213894OFAC213865PUTE213857EPOI213742OSEA213679LLSA213581DTRA213410PENI213398ENSH213393GONE213376OMEW213364TERV213326THAP213266TSWE213218SGOI213206CTLY213159EACC213124BURG213115EDEF213029RAST213010ELEG212945EEST212922STOW212890ERFE212826CALE212739ASNT212714ENUM212702NSAT212694SHEI212673SAGA212646NTIM212579AREB212516DEDB212489EBUI212469REHA212464RIMA212450HEBL212410LEWH212391HISG212324RINE212302FFEN212174DROP212148BLOC212145BUTS212101ALLC212014REPE211989UNIC211956PAIG211850ADIS211795DTOG211753STLE211707NNEL211646NDEX211624HEMT211604HITS211587EMTO211581AIGN211575ISEA211515SIND211472ODER211448UGGE211420DECL211405IDHE211393FELL211377NDLO211357ETAR211342WNER211288SACO211222IGUR211187TALE211166WASL211118STME211112EDEP211108NDEP211065OTEN211058ECLI211057NERG211016GAVE210925NDRO210895RADU210893NETO210888ITCO210886SOFM210846MERA210845TOEN210801EEDI210797MPOS210771ASCA210636FIRM210634EADT210608ERFA210562OREV210552RMON210548UGHO210482TREN210294OWAN210243HASI210241STSO210194RLIE210149RHER210122ILLC210112TOSU209982ILTH209982SATU209976ATYO209960TEEN209915NIMA209885GEDT209813EENI209748CRIB209708HOTO209685SLEA209679DIDA209642ULDS209583EMET209577KINT209533ENNE209478UDED209439STFO209345ARIT209331AINL209306USTT209299OMED209276CONG209169WOMA209153TOCK209153ITWO209039EENE209013HOLI208946TPAR208848ANAS208839MPLI208800FIGU208798COUP208756USEA208745IFFI208633OFDE208607OCUS208543OBAB208523RALA208522TLED208519RSEL208423BRID208233HOTH208188ISFO208157GINS208155TETO208130SANO208099ETTO208044RUNS208012HOWI207860SVER207856TOCH207840YBUT207815ODIS207791ITYC207749INEE207745BROW207701ATSO207677PRIL207606EIRP207606BLED207573MIDD207466RPRE207452ORON207446SCOT207422NDME207419STWO207405ARNI207379LARI207368OMOT207276IONR207135GEIN207110ERDI207090DMAR207006HEIM206987ETED206969ANUA206774NGSH206751NOTO206723ROKE206708ICHT206707ACET206669THLE206649SMAD206591METR206550OFMO206511ORAR206502ERAB206467DAFT206416NLIN206414ATCA206373FRES206363UGHA206318LWAS206256ACEA206225TEDP206224ORTT206195INPR206092NTEL206038ILLN206013TISN205960NTAS205920TKNO205873ARDO205822ULTS205783ENFO205752EIRF205718HEQU205691IVEP205580OREO205563NTIC205549HOSP205519ERLE205511URNI205406MANT205392URGE205352EATA205342ANRE205319LLYC205317UTED205277ITSP205272ORYA205186TISS205169RDIS205109EFIL205094MBIN205041RSCO205039AMAS205032EVIL204938MESO204905AMEW204862EDAF204844USTB204827TOFH204597TSNO204588OHEL204561ETOL204547SDES204534TSEL204528PREC204523EUND204447TUAT204365FAVO204333ERBU204035LLRE204023RABL204011NETW203945NGUA203914NTHR203895INEI203837ENVI203800ERHO203738ITHD203690LYDE203611INPA203610EMID203534NFER203520NASA203506ONLI203458NCEP203439RAME203409THUR203360TARI203310HEPI203296NALO203291IVEO203276EWES203273AGEM203252ENHA203246SECR203226RILL203205IQUE203172RSAI203106OMOR203089LSTO203079ITSN202944ISAR202914SKED202895OPOS202883LLAG202816EDWA202745AUDI202741AUGU202679VENO202567TESO202566RNER202563ANIC202546DBEA202512NEXP202507UMER202487ENIO202484EFFO202479OCKS202433FACI202380NAPP202366TOSH202323RLEA202319OUSI202315AMEM202299SAWA202235PEAN202210NGRA202191SEIT202023INKT201947ESLI201936CLAR201907ARME201898SEND201888EDAM201885YATT201858TOLO201835OUPL201809MALE201694DRAW201634HEWH201572IRIN201523NDIC201439DOOR201436ASCH201431WHET201312ANKE201290ATEF201285TENA201273LSTH201261ITSC201255INHA201129CIRC201100ATRA201078TAPP201075NSCO201058FFTH200997IALA200989EVAL200983UTWH200941LKIN200902NIZA200901EBOO200840NDNE200766IVEC200740ATEW200713MULT200704OLUM200668BOUN200651WHOA200622GERA200562CEFO200516IGGE200515NOWA200396KELY200381ITHF200279MERE200226ETON200212ICET200189ELOS200165YSTH200139ALUE200081DARD200058LANS200050RRIV200026CERN199969ETEL199941LLIS199893NWIL199857OMPU199822ASER199804ERSM199757NADA199688DERN199672LORI199670ROMP199529ERNI199522DANI199521TODI199510LESI199475NTOB199377ONEC199317OFFO199257EDAC199172NGLY199138SAYI199118HATF199083HIEF199054NGAC199026TOPU198967ADUA198889ARMY198878GICA198863DEVI198850HATL198805OARE198777SCOV198766STWE198749EIGN198730ORCH198712ACTS198676ETOG198582SACT198445NDPE198400OLIS198399ORSH198369TICK198257EMAL198190GONT198181NSPO198115RINA198076STIG198069ANAC198067NDOR198060ANYA198021OWNI197959HTTH197936NVEN197726EFAM197667ISSA197662PHER197545WAIT197460VECO197455NECO197423EREO197415TOAL197395TOUC197361TOWI197354NTSE197205ANFO197203INDT197157OLES197113EKNO197075LINS196982SINF196892HEFL196815YNOT196782TSAL196714SOFH196705RAMS196587ETSA196585ARSI196575NKTH196388SESO196384GOTT196370ILIA196365FORR196363NGPO196359ANUN196329MPRE196277AUTO196234ARYS196219DSHO196205LEDG196125ANSO195933YMOR195910LBUM195892NINA195817EDRI195734NDEC195712NNEW195676MENS195604LIVI195581RDTO195553ESSH195520YTOT195466SITU195457ORIC195424INON195348ERBO195342ANYW195298EMOT195287ESEV195267NDBA195262IEDA195212EHIM195163TOTR195125NIAN195064AVID195033SLOW195029LLYO195029GABO194973THEQ194896TEMB194861DASH194835THIM194826CCUR194815SBAN194807IMME194752THCE194744ALEX194675ENAL194627EABL194495ITEA194463INAP194440DTWO194368SMOS194352HEOL194293NCAN194247OTTE194244ORMS194176SFIN194128MANU194113SKIL194096TERL194078OTIO193968AILS193877ALAS193857ETOM193829PATR193737OURP193706ITSH193570EADA193496BABL193460OLOR193456RSAT193400EMIC193341ERGY193336ITYW193286OFAS193277LEMS193258THAR193235HCEN193211ONWE193175ISRA193101TOFS193069TMOR192923OFOU192843OLDT192819UPLE192814OUTP192778NDAC192767GPRO192759WNTH192753STOG192729OSPI192698RITT192693NDSC192630LOSI192606WTHA192549NDMI192511ATWI192463AHEA192438CCOM192412OUHA192409RISH192355RITA192260EEIN192256RHEA192241PITC192241SONC192234LICI192229EARM192194OPEA192151OBET192140GRAT192078CCOU192055OFSO192048NDSP192024OLAT191991ROWI191978ASEC191965GHOU191956ANTR191954REDF191915LEMA191867NEFI191866HEAU191838UITE191809RASS191780EANY191780IMEI191774ERRY191761GLIS191728ICKS191726TANY191705ANAM191606YPLA191598FOCU191591ALKI191576VANC191573SODE191539VESO191534NIZE191524SDON191475NGET191377PARI191356SELV191308ONVI191298ONEE191291ORHE191276GHAN191256ILLO191221ENGT191104NEWI191088NTUA191022ELIS190870ERYS190842HNOL190834LEON190812ETOH190777ARLE190774RWHI190728UTON190698RSHO190694TOPP190685TONO190549YBEC190474NTSH190474TITW190437OSST190415SOLU190375ORNO190374BELL190367BLUE190343DSTR190327MECO190326ALLB190292ALCA190292NGRO190280ERPO190253ANHA190146OWHE190138EECO190113WIFE190107OHAS190032TTWO190025PREP190009MEND189956THUS189955SUFF189940PLAT189932NOON189904THON189896USTE189887CERS189828ALLP189791TEDM189771ROME189727OTEL189691SIZE189622OLAN189593ERPE189549NTIR189512THOL189495VENA189486NTIF189472DVER189420LYAS189340THAM189329DANA189264CIAN189246EAMA189191ANNA189141TLIK189125HOMA189106ARKS189010NGDE188996LARL188995GLES188983IMTO188928FCON188899ENUE188833RSAL188759EDBA188721LATT188709ACIN188423EVED188409EXEC188386SSET188337EGET188273ONGO188224LSOS188214GTOB188214OOTH188150ARTA188045PHYS188018SHIM187966MPUT187965HENC187949TEXT187914OUTF187820RITS187762ITSF187762NYON187729RTST187605LLEA187597YMEN187591NANA187585LLEY187578SSEC187532ILAN187514RVAT187482NNED187447DTOW187431NDFR187422RECI187394OMEI187368FRID187315TERY187263HREA187261APPO187244EAVI187118IPLE187112EENO187036SONH187028AVEH186968AVOR186878OREF186724TYTH186676SMAY186664AIDI186620ELAR186619HCAR186579STSI186501DPAR186492EOFP186444USEH186321MERO186250NALP186217OPED186197MAGI186192SSFU186148OSEC186127AVED186056FILL186013DAUG186009ECLO186003IMAL185980ALED185937OFMI185923OTON185906IMAR185860UGUS185815UARD185733EDEM185719TURD185622ESBU185614RINS185591ABIT185582TANA185569NPRE185425NRES185422DWIL185402SBUR185352OWLE185327ACTT185278RCOU185241DECA185120ORTR185101RIPT185037RTHR184997UREI184961ITHB184919LLYB184861EAFT184832EENG184829OURO184775SEPA184751CHIC184747RREL184745XECU184676DLES184638LSOC184636NARY184575EDEN184574TUTI184564IDUA184560LIND184539LDIS184492FRIC184373ORAS184353YOUD184319MEWH184271OOKE184224LLYD184167CHHA184151EPUT184143TLIN184137EDUN184026ITTI183942ASET183859SMIT183828TOFC183822ZING183791TOGR183751RTSA183746EPIN183734RRAN183714OUPS183705UCTU183690TROD183685LOOD183683YWHI183675TOWO183602RONM183591PPOI183579RGED183558EAPO183531ISNE183530TECO183512LEBR183495ANEA183494HEEV183407OMAS183395ITHR183370NOMY183365GHTW183336INWA183301DERW183280EELI183262HEOF183231NDAM183212UNTO183118ATFO183100RDEN182987NDFA182962TSRE182932RBUT182915IREA182870ERSD182849SCUS182831ISWE182811USER182807EARD182792MEFO182670ALTI182636RROR182542ERWE182507NGBU182504BARR182462AIRS182443TOVE182417TTOO182385GLAN182294NALD182167HICA182127TSTR182037UNCT182036APOL182033ANOR182010ICHE181972NEIG181938VIDU181937CKSO181888LETI181877OTRE181873REDW181850ORDO181792BEAR181771MANN181765SBEI181759DBET181682MANW181643CERE181632HARL181621PROS181564LDAN181508ANSE181485UNDR181369NWOR181360ARDW181319EDBU181314RDST181306BIGG181277RTWO181247PREM181242EPOP181228OFPO181224ENES181194THST181179RASH181149GURE181139VANT181096ANTL181003LLTO180990LERA180990OSTP180897LIGI180873ASIS180868ONDU180830ECOV180830OSEW180815TEDC180810FEST180674ESTC180672URPR180671SNEW180655DIND180552TOBA180525OPRE180411NCOL180407DLEA180380YOUS180268MMIS180229HART180179EWAL180132EPIS180132HROW180109ITET180108ICIE180080TOBU180072IBIL180031NREC180013ERAP180012ENAR180006ISOF179997OLLI179988MMED179955TSBE179897ORFO179866ANIA179764ICED179761LIBE179730OFAM179728MACH179723ENTY179715SUIT179678INAM179670RTTH179637IKES179629ISMI179594NUAR179576ORRI179575SSEA179497PONE179491DALS179476SHAP179401ANIT179363TLET179348ESTP179340NSUM179334THCO179315HENU179311NNOU179309SSPE179304ONSP179257SPOT179256ASPO179250SBET179211HECK179111ORER179107RROW179093ATLA179093CROW179085SBEF179021RONI179014TOEX179009IVIL178975EMEA178891GNIF178889NGHO178887LYDI178855FHER178843SBRO178827RAPP178790RMAR178767NDTE178732AFFI178667NOTR178638TWIN178529DEAD178376REXA178300SNAM178296NGTE178295EATO178275ECEM178248EWAT178187OSTT178146TIVA178104DREC178094SACR178052HYSI177952TIGA177923TOKE177916NGAP177809WORT177709TYCO177683OYED177605ARGU177589DLIN177577UTIV177554PACK177504ASAD177425OFLA177354VERC177311EAKI177308OMEB177273TSPE177236EANE177228YWOU177199EANO177173LHAV177105KSAN177088ALEA177057ECAP177019CUSS176997RFAC176994CORN176950TOUS176894NCEF176880META176858NLYA176850EYCA176846NSPE176731ICKL176708NSET176622EWIS176600CHEC176595TREC176553ENEF176497NOWW176452OFFS176440OSHO176386ORWH176301YPER176300SSAY176236EDDI176147NSEC176072ELLT176041OODA176016HEPH175972ERGR175954EMSE175888RPOS175879PANE175860ONAB175858CESI175842EFOL175725TOLI175694ALPA175632ENOW175549ESCE175537CENE175509PUTT175330YSAI175313RLDW175297TEDE175293COTT175217OWNO175208UDES175204FICU175193INMO175109OMEP175061DONL175061TTOA175028NCIN174998ATME174991OKED174841ANGI174832ANYP174831NCEB174807ENBE174761PICA174727AREW174698LANN174689NSOR174676SORE174668HONO174647TCAR174640NSAS174627NSIB174621ISPE174594OLEN174572NABO174566IMED174545UAGE174534TEME174471TSAT174460HEND174452ISCH174438RLAN174434AYSI174422STEV174396NVIR174384LTIN174366SWHA174354SSIA174342UFFE174308IAAN174222DHEA174129DDIS174115TESI174093INWI173963SSCO173931IALC173915SUES173908ALLW173893ARRO173810SSAG173809CEDA173804RNET173793ENEV173771SINV173566CIVI173512NOUT173478EELS173469FLOO173458EOFI173458NGPE173364HORE173329HTTO173306NOWS173274SOPE173255OFLI173231EVID173170OSTR173162GUAG173129ERNS173048OFPA172976ULDA172891NESO172848OOPE172760RSPE172716LSOH172700VIOL172693KEIT172683EBRU172675SUGG172663CALP172582NEDO172572PIRE172565OFTW172543PTEM172538NUAL172485PLIE172481SANT172475EDDE172473AMAG172467OMEC172350RTON172334TMAK172333CTOB172308NDDO172285WASW172188ORRO172151ERLO172143INAB171966EALW171905VERM171902AIDS171897YRES171867SERS171863RSTS171793RCED171726INAF171626ETIR171593UPAN171588HADS171579ATEV171577VEDO171519TDOE171466BEAC171360ESUN171334THIT171181ALAC171177URDE171128CHOL171055EFIT171011ISLO170960TENE170921SHIR170827GESA170786SOLI170784UGHI170763TOAD170755TSAI170671NCEM170646ALLF170627CHAE170579FREN170541OCIE170511CEIS170508TEXA170497VESI170456CIET170412DEGR170326FLOW170315SSAR170298SSEL170287DOMI170287NDEA170276AREH170234CUSE170221WHOM170146ISWO170100HASC170093ICIT170079DANE170079WORS170043FORL170030OVES170025LAYO170025RVIE169912ISLE169877NPER169869EMAY169798NMOR169796ONSS169784TMAR169753EPAI169721RHAS169647MSOF169644RSFO169625CCEP169546MSAN169524MBLE169480EREE169454ISUN169418ENEA169383INVI169358YSIC169355ARYT169293GINN169285OGIC169261TLYA169195THSO169124ISWH169077HMAN169060ENET168967WISH168958ETAK168956ALSI168893EDRO168886EETS168856TEFO168842CYCL168834LSOT168828PHOT168809PICT168782IPAT168754YAFT168613YSHE168555NDYO168516TOFR168453OSTL168443TWAR168432UPIN168409RSTE168406EIRA168393ROBE168373RSOM168361FEND168343EBEA168319OWTO168298GOTH168285MWIT168189UHAV168153ESSC168081FILE168066SEET168063HEVA168060TURI168003EBEG167959OMEF167951TWER167860DNES167785SAMA167674SINH167637UPPL167633RALO167625ESUS167604MSTO167569EDLI167543NSEA167531YSTO167483MENA167428DEAS167392SHOO167313OKEE167268ESUB167183ERLY167153STTI167140OCHA167055POND167019EEMS166989IREM166953BUTN166923DINF166900NTMA166834EERS166832HOOD166831TEDL166800CKTH166765ANYC166731STEE166729EDPO166671OHAD166615ICEI166577KSON166569HENR166552WASG166531NGPA166471HANK166471NFRA166459LART166455TRYT166453CTOF166439ITHL166412EBUS166402CAPE166391TPRE166361WHOI166328AMAR166260CART166237ERUS166227EADD166207IECE166199NSEN166197PERH166164ERTS166105IESS166100ASAF166090XPLO166036EFUN166023OHNS165929CILI165927RUPT165906GAGE165896ERFU165888ERAD165861ERAI165839BURN165827DCAR165824IGHB165813RTNE165735LTON165632MITH165630ANWA165589ESUM165578DESA165574REBU165546ADIA165546RUSH165538SACC165482AGEI165368CAPA165349DOCT165291ROWT165284ANSH165260ONBU165206CEMB165169VEMB165133INSH165123NUED165102LCHA165098RDTH165085REAB165063EYAN165027ASSH164990IREL164950ORUN164949SESI164868RNOR164867CEED164832MISE164823XPLA164816YCHA164804USPE164784ROAC164780ARMA164769NAPR164760SSUP164709NASS164643ATIE164623UNDO164621ALDI164549LYWI164515OREH164512BROU164484NESI164481ORLE164456DECO164437NTSF164345DCOU164336SUSP164287DTOL164270EAWA164243CEDE164207DSPE164196ESEL164180LLYR164170TOFP164091OROU164049FANS163869EDME163843ASLO163837GSAN163825NEER163824ANCA163812CEWI163805ORSI163784ESSW163751EISL163733ETEN163727ETTY163723TOMI163712RTSO163646BROK163570PEED163547PLEI163509RDOF163464NOTC163436ADIO163427ELYA163411LOND163312TSPR163301NCEC163290NDES163211ITCA163211LOWT163208REIT163177OLAR163104AYFO163038IVEM163030NSOU162984ITSI162963EHOM162936SPAN162904REBO162882MEWI162857URNS162834IVEB162763NADI162759DTOO162747GTOS162737OLID162736SEDF162677EALA162676BLOO162639LPLA162527SMIS162474PROA162455HEAG162360DDIN162287RLES162283DETA162205VENE162177MANO162173ONEM162115QUOS162111MPLA162083EENP162070EFIE162068NSWH162034IGHL161966RISK161963LSOB161936UTAL161903EGOI161812NBEC161798KSTO161789LUEN161784REFI161779CHEL161739TWOS161708ADVE161658DTOF161625GCOM161578MONI161551YMAN161500NDBR161498WEIG161491EHAR161465RISA161409HASP161389SBAS161334ROMM161313MINO161310CATH161306OTOR161272BERG161231OYAL161200NERO161163GHBO161152CEDI161127ERPL161103HATN161100INIA161082OSAN161011EDOW160956NGCH160933IPPE160933EDOE160872NDUC160836NTOC160824USSE160732ALCH160708ILLR160654AZIN160630EVEA160611EARB160593ATEP160586TOIT160583OSEN160580KIDS160570ERSL160554NNOV160535AWIN160525DUAT160458YSIN160444AVEM160368OFME160327ECIF160287POKE160214OWNF160208URVI160203SURP160179NTOH160169ENYO160168OTIC160156ALKE160139AKEI160083NTES159963YPEO159962EIDE159953ROMC159872OALS159859GANT159855BULL159780ILEA159733NFLU159730STOU159727CECO159721ERTR159720ITOF159692NMAY159664HEGU159656FLUE159646EWEL159634HORS159623LINK159622REFR159615EMAS159600ORKA159597IGIO159544ROFF159513OWST159476PAIR159439EAIR159427BLIN159370SBAC159346BOUR159307HIRE159279ATRO159188ANMA159143ITHW159138TSMA159059HATG159055RBAC159032VELS159026HENW159017PIEC159013LTHI159012DRED159006AIDA159003MWAS158963LYSE158918DELA158889SALA158852HTHI158844LIED158840LESC158799RFUL158768TWAN158679RYCO158667ETTL158636TRUE158627VELI158542ILLP158535LETS158510LLIE158464BEAN158459ESWA158444NALY158417STIA158386OTER158348NACT158314REYO158265HASH158261SAGR158242REEA158151TWOO158120ITEM158092TTOP158034RECR158008GWAS157993DLIK157951TOBR157925LMAN157894SWIN157876RWAY157866TSAS157749ULDE157743ARAS157726GGER157709ROMB157706THHE157683LAME157667DAGA157656UALS157534ESTW157504ESES157503EOLD157494ISNT157379NYEA157359NOWL157335ICSA157314LPAR157299BEHA157291EHIC157283TMON157254CHNI157174INEW157147KETO157110CRIP157093ESTL157079HENY157058SEMI157041RSDA156971ISDI156961ORTW156959ASGO156935IRTH156902YINC156808EAMI156807HICL156782HARM156751LESH156714GHIM156592ACEI156531USHE156475GCON156423TILT156367LLON156323CHIT156308FCOU156288CRAF156277HUND156267EHOW156265EATR156259TGET156249HOOT156189OINE156182OUTB156146TRUS156126TORM156063MANE155973TUDY155942TORT155942XTRA155918ORAC155916PISO155915NOUR155891ITHN155871OGRE155865GOTO155796ERYE155742ATOF155692CHEM155683NAFT155563CHTO155546OFLO155534HURS155527SALI155519VIRO155517AWHI155509SOFI155446PAGE155415EWON155349EPAT155311LINC155262SLAS155259ONNO155254EATM155249ESUC155232EDCA155196ATMO155120PEDI155109NGSU155095NTLE155089GSTO155044FLOR155038NTEE155016NFAC155004PLEM154989ICEN154972HANO154901STLI154883EDAP154883WNIN154881AFFE154862TTEE154798TIAT154696NDUN154694ESEP154663TTOD154661OSEP154660WAYF154646OFHO154637OKNO154613NDPL154608BOVE154606ESWO154526LYMA154519PPLE154487INME154462EROA154459MOME154456NDRI154446ASEN154440NANY154309MAIL154309OUTM154288COGN154265ETRU154239ESMO154234ENMA154228CHOI154196AVEC154180OMAR154174OFRO154151NDBU154125SCHI154105NCEH154098IRCU154066IESF154058ISBA154048TLYT154018DFIN154012NGME153970NALE153905YHIS153895CEDB153894OSEL153874ASMO153846ELFA153838EBOT153837AYSO153812IRAN153809UTNO153800PAUL153676ACHT153647ALPO153646ACAD153526ANNU153493TROY153426OREN153414ELAW153392CHCO153360APRE153308RIVI153307ALBA153296ARTN153289NHEW153271TARG153200ARSE153168SEMB153062ISOD153040PREA153015NESD153003LDWA152995NATH152963KWIT152961HANE152932OREG152886SCOL152863NSPI152841TOWE152798ETST152790LLYH152788IONL152710AMMA152708OURF152658TNER152646CTRI152630FORU152629SDEA152576ELIM152567ONMO152549EBOA152535SINO152474OGNI152454ORAD152444RELO152432TOFM152419PATE152387VERO152385ELEF152351DEEP152347LEIS152248ERIV152217ELPE152209HITT152185ELIT152168ILIE152137NTOM152120INGV152113ABOV152104AINC152091INLO152087ETEC152065YDIS152042ATAS152018EDIR152014NFIR151951SOBE151907ONSB151750EINH151707TSFR151683LBEA151650INKS151645DSER151640SHEC151595LOFF151594ERBR151582LSOR151478NGLO151473ENGA151433ELDE151427OFTR151386ARYO151363EXPA151305TWOM151247REWO151229ENWI151193EDOR151189RBAN151170NEWE151149RSCH151143ONEP151138AYSH151096GIAN151076RALP150982ORPR150966RSTP150911MPLY150879ENWE150847YTHR150820TWHA150811ACCU150802DOLL150750PRED150676PATH150651GOES150634NGOV150627RSAG150562HADN150533SBOR150518ECHE150398NEDF150396VESE150355DEAR150320ESAC150240SOFO150229SMIL150225GHTF150206EARR150206OINC150159RRIS150141OFNE150112POTE150082EYCO150047KEAN150045ONAP150041TONC150018SEEI150006URIE149965LAUN149939SITT149933OOKT149897GHTL149889NHAD149876DALO149863OFBE149835EHES149822DDEN149808PINT149803IMAN149792SPOK149777ENCA149774ALME149749FUSE149732MICR149706EMPE149684ASEO149683WINS149671NDAD149651TALA149636NANE149455ELEB149429YLEA149424EAKE149408STWI149360TOFE149350PEDT149313SDEC149187SOFE149180RFIR149127KINS149092ORBE149060SORS149047RCAR149012TOSP149010EDDO149004ITEC148992ERGA148989RENG148950INBE148923NGOR148900NCIE148900INFI148880INLY148806BINE148800MOUT148789VEOF148761EBEI148752TOAP148750VELA148748ANEL148738INVA148713RANA148700RTIM148697FCOM148649UGHS148638HAEL148567ORHO148541NIQU148527PFOR148521EENR148485RSEC148466HEAI148449ALSC148436LYOU148432ARMO148399LLAT148393RAIG148375ISEX148371RNEY148306NOWH148297CKSA148272SERT148271UTAT148250ENCI148238LASH148214NACC148083MSTH148064TEMA148049EFOO148043EERI148022FEAR147985SKNO147967RACI147963LAWS147915NTWH147843ENNI147616IVEW147608WASU147605SOFD147581TBAC147524ISGO147517IMEO147471WHOC147453SISS147333MORN147322LERE147238AMOR147231IMPA147181ETBA147154TEAS147117TDOW147099NCEL147073NDGR146981DSHA146955EPTH146909SACH146869ETES146845OFSU146787SAYT146761ALAT146755ENWH146728HUNT146685ICHS146676SONF146662YWOR146572ISOW146565OBES146478NDTA146461CARS146436ISOR146432ICHC146404LYWO146376UNGE146361NEIS146349NGFI146284TOSO146275ULDT146267OTHO146247NSLA146217ANYM146172ERSR146168LTRA146162RNIA146124OSTC146114ANUM146110ELOO146044WEDT146012TOAT146000EDAG145978SHAL145925IBRA145924IESH145898ITYF145897NAGA145893DITW145884OFWA145850THWE145838ROFA145813SEME145734SEBA145731CENS145686STPR145677FAME145675ACEO145650RSES145621GLAS145570NORE145561INFE145512EDPE145448EHAN145417YPIC145414GLOB145403RTIE145382CTAN145312EMBL145297TUTE145293IGNS145285RVIV145279STPA145204KEST145175BOTT145171NLEA145160YREA145145NIMP145125STLY145122XPAN145117STWA145101NGDI145045AULT145031ONEL144993EMST144964WROT144910ARBO144901TILI144879EATL144789ECOG144771CHEN144770LUSI144765REUN144733ATOU144722DCAS144701CHHE144691ESEM144689EDIE144688THOD144642DDOW144639LEND144596ARON144554NFIN144541OLDA144473EDNO144464EDUR144459ESSS144454YONT144451DAME144449ALLH144406KEND144396ASIM144343DHAD144330NALM144295SINI144273TUES144215FLAT144206ALWI144196NCAL144188CHAP144163SKET144141CEON144097ASEI144055EFLE144054OFFR144044SURR144027TSCA143913OMUC143911DAYI143875NTOU143866GISL143843SAMO143834ORKO143832VENS143829ASBO143783RLYS143762LIFO143726EDOM143724VITY143720NGWO143695RETE143685EDSI143675TTOC143652ASIO143627OOSE143523LRES143493OUDO143477STMO143429TBET143414TSOU143371SFAT143361ALYS143344OYEA143327SOFB143291CKLE143283LOAD143281FUNC143227UESD143198SARO143194RWIL143124THSA143116EPEA143115MITS143068ULES142989OTEA142986WEBS142985ICTE142938SORI142921PTUR142916DANG142893ITSB142886DRUG142881GERO142869ADVI142844UNTS142827NEWC142793INMI142793AMEF142742URIS142738OURM142713UNNE142699NECE142694TROO142669EEFF142646CASI142631ROPP142604RALC142595ESSM142595TRIK142591INBO142557OWHA142525TISI142524STAI142515ICCO142505LELE142398KTHA142391ASKI142375NEMA142323NCAR142307OALL142282EDLA142245IEDI142212ESDE142205TOPI142147IGRA142145TOTE142117SDUR142100TSCH142032ISAM142011DNEW141967SATA141952GTOA141942FEBR141913ASTF141913DWIN141879HASM141845TBEA141835KEDO141818EOFW141812LLYF141802VERL141788ICRO141754AYAT141722OBIL141710TYIS141699DCAN141684WILD141567ATHL141545AUNC141544DITO141513SESH141494RNOT141479SMUC141457AKEO141450GYOU141419IRMA141359RSFR141357DBAC141325RANO141321FINT141309RVES141307YOTH141299VALL141299ULDC141298HESW141261TNOW141255TISE141251HMEN141226EACO141205EPOW141158TDIS141035NNES140992DDRE140978MORA140953TOCR140943OMPR140931HHER140920OUTC140879ADEC140879NDAB140876CEAS140858DANO140809CANP140794ANKI140769EHEW140754UPWI140734TANE140731LLSE140687ULLE140682NDGE140675ONEB140668BEAB140665ADEL140589DELE140552VERP140551INHO140548ATSE140539OTRA140534BLEI140479OBAL140462USTS140447EASY140402OOLA140373LORE140363OMEM140351RYST140306EMAK140294AIRC140288MSIN140266NGYO140176GHTN140156URSD140138NTPR140135ESSP140122EDSA140058URNT140052ELEM140023OUTL140011OHER140001STUR139970ESTF139955RUAR139936LVER139913AMIS139905GHES139904HAME139860THTO139854LYSI139839RCIA139732NDAF139660IALT139656FERI139655IDEL139639OFAP139638NGNE139638RALE139628ALBE139622YPRE139621STAD139592ISER139583BUDG139567EFIG139532MITE139512SMEN139466NTSC139456PULL139432SDEF139424BUTO139420NANO139401RALT139325DASS139316ANET139300ACQU139295YPAR139236SSIG139236ARKI139183OWWH139172OTAT139165GANA139112YALL139095SIBI139094OVEL139078NGSW139061LICY139046OLIV139029ATIM139019NAWA139011NDGO139007RKAN139006BYAN139004BRUA138983ISUS138962FAMO138929ARKA138925REDH138924ANGL138913OODT138880EONA138857ECRO138849HANS138835LEWA138822LLFO138799TIEN138765RSCA138764HCON138758OURB138749ORAB138731LOTH138709ISME138686TTOG138679FEET138657RSAS138625REWH138571PACT138566ERMS138566PHAS138514LENC138513NEDW138475TAGA138443CTSA138425ASDI138424IROW138414IMEW138407LLMA138381NALR138321GERT138314SEHE138289ADEI138286RINK138285ASLI138224AYFR138149TIZE138142URPO138138OUAR138110VEAS138097SAPR138087ECTL138072SCAM138056SSHA138013SASW137997NGTI137968IRRE137966COAS137931EWEE137930HEHU137907STPO137861SENC137843WEAL137761KSIN137755NACO137748EBLA137740IPAL137714DTOE137712EKEN137705ESLA137675IALP137654NHEA137650DINH137646GOFF137568LLNO137501TSHI137479EARW137468EGOO137466XAND137461EVAN137457SOPH137431INPO137391NDSW137356SSOU137331GARE137319SGRE137307ABET137296RSEN137288TREP137235AMME137230NALB137219TTON137192LESW137112NSEP137100NGWE137081NTOO137068DCHI137061NREA137023DOFA137022EDHO137002EEDA136952PURC136945DINN136925ISAG136895POOR136886DIUM136874IVEF136868NGTR136864YTOS136798SERE136793RSER136783RAMM136770OUSS136766OITS136748LBER136731SOHA136719LYPR136718DFOU136713RTTO136703HIEV136700SOFW136663NDEM136659TORN136627SABL136572YYEA136563RIZE136549DESE136500TENI136498NEAS136449NCHO136423LINI136420OEST136358RUCK136352LLIT136340ACIL136321URFA136316ATUS136293SLOC136273SSUM136260SINP136234NICE136227ECAD136215BLEO136191EDEL136171ONAC136149ALLM136108ERIM136100SMUS136082TASA136028RALD135982ATEH135982EMOD135949OSUR135947STAU135941EIRL135888ASFI135831NALF135810DENS135773SLON135761VIET135758DEXP135749LLAL135740EBOU135739ROOK135714NUES135706EXPO135703INSC135699VEFO135696GSTA135683EDSH135575ORID135556EBAR135545HOIS135492ENMO135492ATEB135471VERF135461NTSS135454UTTI135449OFTO135443YSAN135420DBYS135419ASEB135379STAC135310SCLO135303WECA135276EIRR135272NSCH135266ASLA135258TEXP135233TYPI135201PACI135186RREA135180NNUA135159GSIN135158EXPR135155TMAY135121NCOR135106OREB135103NTOD135086LYWA135070XCEP135066ORPE134992KOUT134986ITRE134955SONB134944NNOR134911SANG134910RANI134909TOOL134890EWEA134851DULE134844BRAT134834TYFO134821PIRI134807RSMA134805REEX134709FPRO134678TATU134637NDBO134633GEND134629EEDO134623DSAI134569ERGO134562OFDI134540HAPE134540NTME134516SCUR134464TAFT134458HARR134444EBRE134441ESYS134440ENAB134329ONEF134312USBA134298STOE134285HTOF134283HBOR134282NDAP134269URAG134256NEWT134255EPHO134234GIVI134219ECRI134187TWHO134152SHIG134088IGNO134057NORA134042TESW133939ANSC133919APPA133901TEWI133898KESA133854THMA133841FIFT133836SHOM133811AREU133787ONEH133782CANE133741RHAP133665ARTT133664XPRE133657ICHO133622LORD133559LYWH133532PENA133509LDCO133490TTAK133474ATAM133414CKLY133376ISET133305SWIF133301DETO133281MAYO133249SGRA133212ARIL133171MEWA133122ATSW133106ELED133087EEXT133053LFIN132964ACIT132960EFLO132938NTEX132911AYOR132906SGIV132903ATAB132893GNAT132849BERI132839ORYE132825YDON132808NGSC132782CHEA132769ARMS132680NDEL132675ITSM132675SINM132651PEAC132649LPED132632ICIS132629ANOP132612TRET132598INEM132577EVES132536DUND132503EVET132499ETYO132491RIAT132483OEXP132476NWER132467ILWA132457ICKI132444OGIV132412REVO132387RALM132381UCHO132376TIND132376KEDI132334EYON132311INBU132290CARO132286SGRO132276IMTH132215RAEL132212REEL132182ASAG132132SFAM132128NPRI132127OMEE132084WLED132057MALA132048RCAN131991EWEN131979WAYA131977STCA131975ASTM131970EDPA131939IWOU131924OATT131902ACAR131896LAYA131890REEK131795TOHO131729CEBE131654HTAN131648SOFR131623HARI131622YYOU131603ONPA131590ICST131572MEFR131552ISHT131532HLET131529GITS131529OMFO131519ILLW131506FFIN131496ALTR131491ATPR131438MEAT131407OTAN131336OOLI131336NLYO131330NBET131327YSTR131302VERD131282HOWM131247NGEO131236YCLE131215WOND131175ANAP131173TPEO131159ELDA131156ELDS131139KSTH131107ABIG131089ADAM131080UGGL131062EITW131054LEHA131029ONDT131000ARAB130984ALFA130977TDAY130956YABO130955ASNE130950HEYO130904ETCH130882DTHO130871HPRO130853OWNW130841YWHO130810TRIN130793LEMO130789ITMA130785CRIS130773RDON130762YOFA130731DSHI130669LSOP130619ANSL130586KICK130585AVIS130584IDAN130507RSTI130490MPAC130472TLER130462AHAS130448SSMA130443ATWH130413SURG130398RVER130392CTST130390PAID130382SSIC130371EDLY130368ERDO130344YOUL130307TEAR130304YTRA130276HEAB130261ABAN130261SREM130221EVIN130191LISA130188TOFL130185EACE130158DQUA130130SABI130124THSE130112NGEA130072RILY130044IAMS130039POUN130035RSRE130032NDDA130013NOVA129962UGHH129949EEKE129924ILLF129856LSOI129806SMON129714AIME129706SRAE129685PEDA129626DALE129585ISSH129577TOON129571VOCA129560LLYP129560PUSH129559UTST129540RSBE129453YALS129442ULDR129435YREC129421EOFB129388OPIC129383NAUG129367GETI129366BOYS129360EINI129353LYCA129349MAGA129347HERG129347TEWA129337HASR129330EADV129293ILTO129285ORUS129240YEVE129233EBLO129220ITBE129204URST129152TTOH129150AYOU129142ORCA129141NELE129140TRYA129085DISS129046EDFI129045HOIC129043DHEW129041NANI128994AYHA128974YINS128967ECTU128951SEFO128859ADDR128834NSUL128824BOWL128805WSTH128720NETI128720SMIN128694RATU128681YINA128650ERYD128571ASLE128536IMMI128532FARE128505NOPE128459NEUR128450KNEW128419ANGA128411NGAF128399MICA128397WEDN128391TMEA128310NMON128298EOPP128284SASI128276OSAY128271GATT128266BING128230DEMI128220LIBR128175LIEN128169ASTL128163DISE128151ESAF128143NLIK128122DAYW128119OFSA128009ABRI127956FANT127949ELSA127938INAU127921DGES127920VOIC127904ICTU127891HADO127874THAF127869RANE127828ITNE127808COLU127788ETSO127728LWOR127680INOF127652ANGO127613EROO127612ESLO127611IPPI127602LLSH127578UPOF127556ARDL127552CEWA127543ANTW127479UTWI127460SEIS127456YDID127455TOWH127447BSIT127416NOFS127413CKST127397ETWI127382CESW127371ISEN127337ASIC127324SPAS127278RRIN127256OBSE127224DEIN127222DMAK127203LSTR127189LLSO127189IDIT127188LDST127184DTOI127181SOMA127170EPIC127153SARY127136CHAT127101RAFF127052ODAN127041ATAT127040IHAD127023MICS126983ECHO126979BUSH126947EDUL126936ASIL126924NGSP126878CESH126858RDSO126789ROYA126781INEO126750RONA126699GINI126692DPRI126666NTSP126639POLL126634EENB126632ESOC126624EYWO126612ASUN126570EVOT126569ECUL126560ULDL126544MOTE126543NNAT126483RUGG126477TOGI126473XPEN126457WERT126454DHEL126370OYEE126357APHI126353EBSI126350UTFO126341AINW126318CLIM126294ARYC126242LLNE126226MESE126225OREE126182ROLI126162ONHO126156ECOS126153MESH126125VETE126110EENM126080TINF126079RROU126073OFYO126048TIMP126046MOTO126039LNOT126016UITA125992RVIN125905TROP125888OMON125848USHI125831LADE125829OURH125801DSEV125770LLET125756SEDW125729OPAR125723MUSE125698MATH125687ANYI125686ERAM125633CEWH125623ISCL125614ILLM125600CATC125593ROWS125563GHLY125519OFGO125511YLIN125506ACRE125501ORKT125495THOW125484SENG125469CUME125464DREP125443SSCH125434EDSU125434DREW125407LEAT125382UCHD125378IGER125342RTIO125329IONN125300DHOW125252TWOY125237UCTS125210ARDF125187LLAB125146TLEM125102WNED125094MESW125074EIRH125038OLDM125026DWHA124979CANO124977FWHI124950YSCH124943RSET124917DIEN124908AURA124897TANO124876PRIO124859EIRD124859OMBA124852AVEI124805MEIS124777DVIS124752ISHM124726ATHR124710EXAS124675SATE124622TEDD124618ATDO124591NDIF124568AMEP124548RHAD124527ITHG124518ARMI124507GTOD124471LESE124464HNIC124436ASAW124397NEWO124370ORTF124336LUNT124329AINF124250GERI124233LATO124210UREW124202GREG124201NERE124176ICHM124171TANI124155ESIM124150ITIZ124132EFRA124118IRLI124114SETS124037IRLS124006AFET123984VEGO123963NOTP123953ULTO123941AMSA123939RNTO123929CHDO123891GTOG123886EIRT123858NSES123842ALSH123830ASEL123804DSUP123785YOFS123776DAYO123735HABI123665ALOR123649ADCA123636DSOU123621ATDE123617MECH123611OREW123602DINB123563ASWI123551INBA123538MORI123478NLAN123447NUSE123444NTFR123441OCUM123417PONT123403NORI123305EWED123256TERG123210EECH123209MIGR123189ISAD123186URER123172INKA123127HOCK123096REHO123092SPOI123091ELSO123090TESE123081SEMA123074STPE123071BORD123062HEYM123058EDHA123053DENO123012SOFL122998ENIS122992ESAB122977AUTI122969CHMO122952OFNO122941RIET122915NINV122910TARS122902SHEE122837DIER122820LYAF122755LYHE122721CEPR122689LOBA122649KEPT122614DOCU122566URAT122559DAPP122535ARCO122498AGON122445NICK122370ISCR122343TLOO122317ABEL122312PELL122311ONCL122285ONGI122273MORT122273ETAB122240OKEN122158DTIM122152APON122133CALT122113TDID122112PANT122108ASFA122089PPLY122086YTIM122061SSIM122045EROL122018OURD122007LLYE121972ELTH121965DINM121937OSCO121935ECOA121916EYTO121893IZEN121875RIND121870ENIG121856HEEC121827ILER121747LBUT121733TFIR121619TSBU121613ACKL121581SBES121570HWIT121563IESB121480TENO121473EYWI121441ICEW121406VELE121367EHAL121332ORSW121295EMPO121270QUOT121251TAWA121246HEID121238PHIC121230ERAF121157ITSW121142AVEP121106GESO121095SEEA121086NGBO121077NGUN121054URBA121051OPRI121050IFEA121042WRON121029ONTW121022EENH121015DEDO121008NINF120984ORGI120974LLPR120955EEYE120924ALGO120924ILLG120902REUS120885FELT120877ITFO120866DTAK120857ERYA120839LORA120829ATBE120824ESTB120791OADS120778AMEC120761ELCO120760EIRM120751INLI120721NOTG120718NTCA120656SICI120639EMES120615OFBA120614HAPS120603TEER120595TRUM120571BASK120570OFHA120566OTAB120505RTEA120478OUTR120473RLYA120465EETO120464INEF120459RIKE120456FIDE120444YBET120418LEDE120414CODE120406WHOD120375WARR120271FLIG120156EITI120126LARA120080BRIE120079TSPO120044OMHI120014ESLE120011NAMA119997CHMA119989DMIL119974YUSE119957UTIF119867EENW119849LDWI119834SQUI119823LDEN119799DWHO119792KENT119790LEDW119783EDOV119777KTOT119765BEAU119749AHIG119732EYES119729LTAN119690ANPR119678PURP119675DWER119675ELYS119646SBEL119643NARR119621AIRE119612AYWI119598AITI119591IRPO119584ECAT119582EINN119574SFAC119551INEC119550LEVA119531ILLU119500DINE119457OURL119433ZENS119419AIGH119401ENBY119390RITO119388LYMO119342DSCO119312OOKO119268NEIT119252DMON119241NHOU119232SALT119231ENOV119180OODI119148VERR119124OLOF119107UEDT119043LIZA119027ASSP118986PPAR118977SURA118969XTRE118936ELIC118900SISO118865ABUS118812LICT118782ICEC118763BALA118747LEDF118731ONBO118705YEDA118671DERB118652IMON118647TMOS118636ONBY118621RSIS118616AIRP118607PLED118596RTFO118589CTSO118563MALS118544NTYO118525IESC118479DENI118417IOLE118412ONAF118361NDCR118345DEBA118341IANI118339NGAD118333RYFO118326GELE118301RCRA118258ILLD118179GTHR118170EEMP118146DERC118122AINM118110EYSA118104HEEM118070DRAI118017POFT117992EIRB117978GHTC117976LEHE117966LISM117959DAYN117959OLET117933SSIT117894GUYS117893PSAN117865ROMW117817NEDH117786ARWI117752IVEH117746SLIM117728MONA117699BLEW117695DRUN117688ITDO117686FREQ117647OUIS117558CAIN117553REHI117526UTCO117493OTSO117492RIMI117488BOMB117464TTOW117458WNAN117449RNAN117425TOUG117414EOFO117410VOID117394DARK117392NCAM117366YCAR117314WOYE117301OMBE117214GUID117157LOAN117139EENF117138CREW117138EDCH117136DINI117135ADCO117122DACO117067YTOB117053IGAN117035GEDI117032EINP117032YISA117029LDIE117018ONWO117006RAMI116995TINI116983NDPU116979APPY116946REFL116920NEAT116914AINO116878DSWI116816EANN116814DBEF116760DOYO116758REEC116745SCLA116726ENOF116722CLUS116709ASMU116709ONCH116701DANT116700ATSU116695NPOL116688ECLU116676HTBE116671TWOT116654NAMI116609NECA116599EMOU116589MCCA116586NTOL116576RLDS116555ULDP116543AGEW116539INEV116528ADAL116525PATT116515OTHT116512LYUN116502HIBI116475ILLL116466LYEA116459PENN116434ANHO116427IEWS116401TEDR116376ICEP116298LSAR116243OWNP116187UDIO116172SHTH116168IRAT116165OUSC116122TOSI116100SLIF116096EDET116088DTOU116087ORTL116067SIXT116066OWNB116039NOTW116038MMIN116037RSTC116025AVOI116023HUSB115994GPLA115992DSAR115959ORWI115956EDMI115939HENB115920OSOM115916EOFR115877ACKW115874WISE115845SMAK115831STEL115813ANLE115801THSI115768NDUR115744GBAC115700ICAG115687AIDO115680IAME115667RFIN115647EFUS115618ATOT115590AILI115569IGEN115542ONOU115534EINM115518NISS115462AWHO115456ONIA115422RUIT115421APTA115417EGIV115408YOUM115309OBRI115308IALE115293LTEA115292AGRA115286YEST115280IORS115280OFUS115231NCIP115217FSTA115208NASI115205SOIN115202UNIS115180ISGR115172TOLA115128SUNI115070PIRA115044LIDA115012EFED114985ITSR114973DBYH114972LDON114969LOUI114967EOFD114966TOPS114961IRCO114940ASIA114915TOYO114895OFWO114830LDMA114820OTHR114795EEXC114789RNEW114779EYWA114756SDOW114753SITW114738ETOE114736ACEW114725OMEL114721NMIN114715OFIL114691OPES114690LLHE114681HESM114659BATE114587TACH114572ESTY114551HHAS114535CKON114531SREG114516ARLO114514CIOU114496EYDO114485STCH114484SAVA114473HEYL114468ERIF114460CHRE114450LLYM114436UCTE114426LLSI114370EMTH114321GSTH114310ATPE114301GBUT114293ESAG114191IVEE114145NUME114118HUGE114107TONW114099TBEE114068EWSP114025OSEO114022ITSL113983TRUG113980MULA113946NITA113932OWHI113928TTHO113921NDCL113902GTIM113901OFAT113888ADST113858QUIP113822MOBI113815LYNO113742STTW113719MHIS113708TEAL113643HOTE113643GTOH113599CHOT113598TRAS113570YNIG113536KETB113534HOLA113525AVAL113506SEDS113472HWES113453NBER113435TASK113433STDE113433CHOS113420URRO113416ERYW113410UCHT113379DSEE113337EDWE113324AVEF113320ALSW113304SESP113300OFAB113300IDTO113298SDEP113271GMOR113247SONM113243RYIS113227STAM113220HOAR113202AGRO113189RASA113176TISC113158TESS113156URRI113134EESA113099HEVO113095NART113094HASD113063NSAL113057DEDW113056MEHE113030ICRE113006IRIT112992TLEO112991EAMT112969RCHO112950ROFS112894NSPA112889IFHE112865OBEI112856HEGI112852NGPL112837LYOF112833ANEM112824RMEN112812ELEN112779HMOR112771OHOL112717IANO112664SGEN112644RMIS112635OLUN112620DINO112616AMBE112607NEMP112588RGRA112574MOFT112574ITYH112547AVEO112545VESH112542RHIM112532ATFI112503CALM112495OADC112458DDUR112437NHOW112370REEO112362USEW112342NKNO112341SEAC112334ITYB112324SSTU112320BEYO112310OUSP112306ERBY112276EDLE112272NEFO112261SAVI112214SEEK112211SPUT112160TADI112103AMTH112090ISFR112082TTEA112065DERG112056NUND112053YMAR112025OPPI112017TESH112007SARA112004NEGA111993UTCH111925OAPP111924TBEF111918NICI111904HEDB111874ANTC111867URVE111866QUEE111859LTHC111848INEB111833URCO111813SASE111787TSTE111786CHFO111765TSST111763NKED111761ULED111733DEDF111722HINS111718NORS111709CQUI111701YTHO111693TESC111633TSER111630DONS111620ATNO111612SFAR111604UMIN111592ENTG111532STOI111515NHAV111489LICS111479THWA111473GMEN111451FEMA111450UTTE111403ERYB111376NSEL111359UBST111354OBEL111350EBEN111321OPOF111315ELDI111311NBOT111305SCLE111289ICEF111265ACLE111263REEW111257DBYM111242RTOR111230ANHE111219DDES111064OURG111059HOLO111034ARYI111023RUNI111006ASTU111001ACCI110988LMAR110977TASI110975OWHO110941BORA110909LLWA110900GATH110898EINE110892NGNO110879DULT110879EITA110875SEWI110858RTAT110855RRIC110815OSTH110814ISDO110742TOAR110736RFEC110713ATPM110654NDDR110650STSH110648ONBA110648EWTH110646RGAM110625LOTS110612WEDO110607REDR110587DOPT110579HADE110551WEAT110527NDEF110524REEP110458EFEE110403DRAM110393OFBO110329ACAN110328OCKI110325ISBO110302NENG110299SALW110298FERT110285TRAF110284ADAS110266VEON110258HCOM110228MURD110183OFRA110174TWEN110170ZINE110157TRIG110148HOLL110134HYOU110080VEHA110057LLUS110047NHAN110042ORSC110034KWAS110032NOIS110006OPOL110004SURF109955RSTU109943IBIT109920TATO109902CHOR109889EXIC109874OCRE109867ITEL109859UNLI109856OSTU109838NONL109834FMAN109834NUET109801ENDU109798RATS109787MIKE109786NGFA109757SNOR109755NERI109747UNAT109729HOWO109727"
TOTAL_QUADGRAMS = 4224127912
FLOOR_Q = math.log10(0.01 / TOTAL_QUADGRAMS)
QLOG = {m.group(1): math.log10(int(m.group(2)) / TOTAL_QUADGRAMS)
        for m in re.finditer(r'([A-Z]{4})(\d+)', QUADGRAM_DATA)}


def quadgram_score(text):
    return sum(QLOG.get(text[i:i + 4], FLOOR_Q) for i in range(len(text) - 3))


def generate_square(keyword):
    keyword = re.sub(r'[^A-Z]', '', keyword.upper().replace('J', 'I'))
    seen = []
    for ch in keyword + ALPHA:
        if ch not in seen:
            seen.append(ch)
    return seen


def inverse(square):                 # letter index -> position 0..24 in the square
    inv = [0] * 25
    for pos, ch in enumerate(square):
        inv[IDX[ch]] = pos
    return inv


# The four-square encryption, used only to build the demo ciphertext. Each plaintext pair is looked
# up in the two plain squares (standard alphabet); the ciphertext letters are read from the two keyed
# squares at the opposite corners of the rectangle the pair forms.
def encrypt(text, key1, key2):
    text = re.sub(r'[^A-Z]', '', text.upper().replace('J', 'I'))
    if len(text) % 2:
        text += 'X'
    out = []
    for i in range(0, len(text), 2):
        r1, c1 = divmod(IDX[text[i]], 5)
        r2, c2 = divmod(IDX[text[i + 1]], 5)
        out.append(key1[r1 * 5 + c2])
        out.append(key2[r2 * 5 + c1])
    return ''.join(out)


# Decryption is the inverse: find each ciphertext letter in its keyed square, then read the plaintext
# pair from the two plain squares at the opposite corners.
def decrypt(first, second, inv1, inv2):
    out = []
    for k in range(len(first)):
        p1, p2 = inv1[first[k]], inv2[second[k]]
        out.append(ALPHA[(p1 // 5) * 5 + p2 % 5])
        out.append(ALPHA[(p2 // 5) * 5 + p1 % 5])
    return ''.join(out)


def split_ciphertext(ciphertext):
    first = [IDX[ciphertext[i]] for i in range(0, len(ciphertext), 2)]
    second = [IDX[ciphertext[i + 1]] for i in range(0, len(ciphertext), 2)]
    return first, second


# Weighted move set, identical to the Playfair breaker: mostly single-letter swaps, occasionally a
# whole-row or whole-column swap or flip, which lets the search escape the near-misses that single
# swaps alone get stuck on.
def move(sq):
    sq = sq[:]
    r = random.random()
    if r < 0.90:
        a, b = random.sample(range(25), 2)
        sq[a], sq[b] = sq[b], sq[a]
    elif r < 0.92:
        a, b = random.sample(range(5), 2)
        sq[a * 5:a * 5 + 5], sq[b * 5:b * 5 + 5] = sq[b * 5:b * 5 + 5], sq[a * 5:a * 5 + 5]
    elif r < 0.94:
        a, b = random.sample(range(5), 2)
        for row in range(5):
            sq[row * 5 + a], sq[row * 5 + b] = sq[row * 5 + b], sq[row * 5 + a]
    elif r < 0.96:
        sq = [sq[(4 - row) * 5 + col] for row in range(5) for col in range(5)]
    elif r < 0.98:
        sq = [sq[row * 5 + (4 - col)] for row in range(5) for col in range(5)]
    else:
        sq = sq[::-1]
    return sq


def anneal(first, second, steps):
    sq1, sq2 = list(ALPHA), list(ALPHA)
    random.shuffle(sq1)
    random.shuffle(sq2)
    inv1, inv2 = inverse(sq1), inverse(sq2)
    score = quadgram_score(decrypt(first, second, inv1, inv2))
    best = (sq1[:], sq2[:], score)
    for step in range(steps):
        t = 150 * (0.3 / 150) ** (step / steps)
        if random.random() < 0.5:
            cand = move(sq1); ci = inverse(cand)
            cs = quadgram_score(decrypt(first, second, ci, inv2))
            if cs > score or random.random() < math.exp((cs - score) / t):
                sq1, inv1, score = cand, ci, cs
        else:
            cand = move(sq2); ci = inverse(cand)
            cs = quadgram_score(decrypt(first, second, inv1, ci))
            if cs > score or random.random() < math.exp((cs - score) / t):
                sq2, inv2, score = cand, ci, cs
        if score > best[2]:
            best = (sq1[:], sq2[:], score)
    return best


# Steepest-ascent polish: for each square, try all 300 letter-pair swaps and keep the best improving
# one, repeating until neither square improves. Cleans up the last few letters annealing left loose.
def polish(first, second, sq1, sq2):
    inv1, inv2 = inverse(sq1), inverse(sq2)
    score = quadgram_score(decrypt(first, second, inv1, inv2))
    improved = True
    while improved:
        improved = False
        for which in (1, 2):
            sq = sq1 if which == 1 else sq2
            best_cand, best_score = None, score
            for a in range(25):
                for b in range(a + 1, 25):
                    cand = sq[:]; cand[a], cand[b] = cand[b], cand[a]
                    ci = inverse(cand)
                    s = quadgram_score(decrypt(first, second, ci, inv2) if which == 1
                                       else decrypt(first, second, inv1, ci))
                    if s > best_score:
                        best_score, best_cand = s, cand
            if best_cand:
                if which == 1: sq1, inv1 = best_cand, inverse(best_cand)
                else: sq2, inv2 = best_cand, inverse(best_cand)
                score, improved = best_score, True
    return sq1, sq2, score


def break_four_square(ciphertext, restarts=12, steps=150000):
    first, second = split_ciphertext(ciphertext)
    best = (None, None, float('-inf'))
    for _ in range(restarts):
        sq1, sq2, _ = anneal(first, second, steps)
        sq1, sq2, score = polish(first, second, sq1, sq2)
        if score > best[2]:
            best = (sq1, sq2, score)
    return best


if __name__ == '__main__':
    plaintext = (
        "the four square cipher was invented by the french cryptographer felix delastelle "
        "around the end of the nineteenth century it belongs to the same family as the playfair "
        "cipher and it encrypts pairs of letters at a time so it hides the single letter "
        "frequencies that give a simple substitution cipher away the method uses two keyed "
        "squares and two plain squares arranged in a grid and the sender looks up each pair of "
        "plaintext letters to read off the two ciphertext letters from the corners of a rectangle "
        "even so the four square cipher is only a pencil and paper system and it falls to a modern "
        "search that scores candidate decryptions with english quadgram statistics and climbs "
        "toward the arrangement that reads most like real english text given a long enough message "
        "the two secret squares can be recovered from the ciphertext alone with no crib at all")
    key1 = generate_square("EXAMPLE")
    key2 = generate_square("KEYWORD")
    ciphertext = encrypt(plaintext, key1, key2)
    print("ciphertext length:", len(ciphertext))
    print("ciphertext starts:", ciphertext[:40])

    random.seed(2026)
    sq1, sq2, score = break_four_square(ciphertext, restarts=8)
    first, second = split_ciphertext(ciphertext)
    recovered = decrypt(first, second, inverse(sq1), inverse(sq2))
    print("best fit score:", round(score, 1))
    print("recovered key square 1:", ''.join(sq1))
    print("recovered key square 2:", ''.join(sq2))
    print("recovered plaintext:", recovered[:96])

Running it prints the worked example above:

ciphertext length: 706
ciphertext starts: RBECNQRNTMXMAOFIFYQUAMCIZKKPMOMURBECTEIY
best fit score: -4169.8
recovered key square 1: EXAMPLBCDFGHIKNOQRSTUVWYZ
recovered key square 2: KEYWORDABCFGHILMNPQSTUVXZ
recovered plaintext: THEFOURSQUARECIPHERWASINVENTEDBYTHEFRENCHCRYPTOGRAPHERFELIXDELASTELLEAROUNDTHEENDOFTHENINETEENTH

Limitations

This is a teaching breaker, strong enough to recover real four-square keys but not a tuned cryptanalysis tool:

  • It needs a fair amount of ciphertext. The example uses 706 letters. Shorter messages give the quadgram scorer less signal and may need many more restarts to converge, or may not converge at all. Playfair, with one square, needs less text than four-square needs.
  • It is a stochastic search, not a formula. Unlike the Hill cipher breaker, which solves the key directly from known plaintext, this one climbs toward the answer and can stall. Multiple restarts, not a single run, are what make it reliable.
  • English text only. The scoring is English quadgram statistics. A message in another language, or one without normal letter patterns, would need a matching quadgram table.
  • Unconstrained cells stay ambiguous. When the ciphertext never exercises a particular cell, the recovered square may place those letters in a different but functionally identical order.

Security Status

  • The four-square cipher is a historical curiosity, not a cipher to use. It was invented by Felix Delastelle in the late nineteenth century and is comfortably broken by a laptop in seconds to minutes. It offers no security against any modern attacker.
  • Pairing letters only delays frequency analysis, it does not defeat it. Encrypting digraphs flattens single-letter counts, but quadgram statistics recover the structure, which is why this breaker and the Playfair breaker share an engine.
  • Two keys are not meaningfully stronger than one here. The extra square multiplies the nominal keyspace but not the real difficulty. The search follows the same English-likeness gradient to both squares at once, given enough text.

FAQ

How is this different from breaking Playfair?

The engine is the same simulated annealing with quadgram scoring. The only change is that the key is two squares instead of one, so each move edits one of the two. The larger keyspace means four-square needs a longer ciphertext to converge reliably.

Do I need to know any of the plaintext?

No, this is a ciphertext-only attack. The search recovers both squares from the ciphertext alone, using only the statistics of English. A known word would speed things up, but none is required.

Why does it sometimes fail on the first try?

Simulated annealing can settle on a wrong arrangement that scores well locally but is not the true key. That is why the breaker restarts from fresh random squares several times and keeps the best. The correct decryption scores far above the near misses, so it stands out whenever a restart finds it.

Why quadgrams instead of letter or digraph frequencies?

A pair-based cipher like four-square flattens single-letter and even digraph statistics, so those signals are too weak to climb. Quadgrams, four-letter patterns, carry enough of English’s structure to guide the search all the way to the key.

How much ciphertext do I need?

More than for Playfair. The worked example uses 706 letters and converges within a handful of restarts. A few hundred letters may still work with more restarts, while very short messages often cannot be separated from plausible-looking wrong keys at all.

References

  1. Delastelle, Felix. “Traite elementaire de cryptographie,” 1902 (the original description of the four-square and related ciphers).

  2. Practical Cryptography. “Quadgram Statistics as a Fitness Measure” and “Cryptanalysis of the Four Square Cipher.” Available at: http://practicalcryptography.com/cryptanalysis/text-characterisation/quadgrams/

  3. The Playfair breaker on this site, whose quadgram scoring and move set this breaker reuses: /blog/playfair_breaker_guide/

A visual representation of breaking the Playfair Cipher
Basic Classic Symmetric Breakers Advanced

Breaking the Playfair Cipher

Playfair defeated single-letter frequency analysis by encrypting pairs of letters through a 5×5 key square. But the same simulated-annealing idea that cracks the substitution cipher still works here too, once you swap in quadgram statistics and a richer set of moves.

20 min read

A visual representation of the two-square cipher breaker recovering two key squares from a crib
Basic Classic Symmetric Breakers Advanced

Breaking the Two-Square Cipher with a Crib

The two-square cipher resists the ciphertext-only search that breaks Playfair and four-square, because it has no fixed reference squares. But a crib of known plaintext breaks it in seconds. Learn the known-plaintext attack, with runnable Python.

13 min read

A visual representation of breaking the monoalphabetic Substitution Cipher
Basic Classic Symmetric Breakers Advanced

Breaking the Substitution Cipher

A monoalphabetic substitution key is one arbitrary permutation of 26 letters: 26! of them, far too many to brute force and immune to Kasiski or the Index of Coincidence since there's no repeating key. Here's how frequency analysis and a hill-climbing search crack it anyway.

26 min read