Imported anagramarama-src-01.tar.gz v0.1
authorPat Thoyts <patthoyts@users.sourceforge.net>
Tue, 15 Jun 2010 19:47:54 +0000 (20:47 +0100)
committerPat Thoyts <patthoyts@users.sourceforge.net>
Tue, 15 Jun 2010 19:47:54 +0000 (20:47 +0100)
31 files changed:
audio/badword.wav [new file with mode: 0755]
audio/clearword.wav [new file with mode: 0755]
audio/click-answer.wav [new file with mode: 0755]
audio/click-shuffle.wav [new file with mode: 0755]
audio/clock-tick.wav [new file with mode: 0755]
audio/duplicate.wav [new file with mode: 0755]
audio/found.wav [new file with mode: 0755]
audio/foundbig.wav [new file with mode: 0755]
audio/shuffle.wav [new file with mode: 0755]
gpl.txt [new file with mode: 0755]
images/.xvpics/background.bmp [new file with mode: 0755]
images/background-al.bmp [new file with mode: 0755]
images/background-old.bmp [new file with mode: 0755]
images/background.bmp [new file with mode: 0755]
images/letterBank.bmp [new file with mode: 0755]
images/numberBank.bmp [new file with mode: 0755]
images/smallLetterBank.bmp [new file with mode: 0755]
makefile [new file with mode: 0755]
makefile.WIN32 [new file with mode: 0755]
readme [new file with mode: 0644]
src/ag.c [new file with mode: 0755]
src/ag.h [new file with mode: 0755]
src/dlb.c [new file with mode: 0755]
src/dlb.h [new file with mode: 0755]
src/linked.c [new file with mode: 0755]
src/linked.h [new file with mode: 0755]
src/sound.c [new file with mode: 0755]
src/sound.h [new file with mode: 0755]
src/sprite.c [new file with mode: 0755]
src/sprite.h [new file with mode: 0755]
wordlist.txt [new file with mode: 0755]

diff --git a/audio/badword.wav b/audio/badword.wav
new file mode 100755 (executable)
index 0000000..6797b3a
Binary files /dev/null and b/audio/badword.wav differ
diff --git a/audio/clearword.wav b/audio/clearword.wav
new file mode 100755 (executable)
index 0000000..87ece75
Binary files /dev/null and b/audio/clearword.wav differ
diff --git a/audio/click-answer.wav b/audio/click-answer.wav
new file mode 100755 (executable)
index 0000000..c5ab537
Binary files /dev/null and b/audio/click-answer.wav differ
diff --git a/audio/click-shuffle.wav b/audio/click-shuffle.wav
new file mode 100755 (executable)
index 0000000..26b982b
Binary files /dev/null and b/audio/click-shuffle.wav differ
diff --git a/audio/clock-tick.wav b/audio/clock-tick.wav
new file mode 100755 (executable)
index 0000000..37afcd7
Binary files /dev/null and b/audio/clock-tick.wav differ
diff --git a/audio/duplicate.wav b/audio/duplicate.wav
new file mode 100755 (executable)
index 0000000..6797b3a
Binary files /dev/null and b/audio/duplicate.wav differ
diff --git a/audio/found.wav b/audio/found.wav
new file mode 100755 (executable)
index 0000000..7334d18
Binary files /dev/null and b/audio/found.wav differ
diff --git a/audio/foundbig.wav b/audio/foundbig.wav
new file mode 100755 (executable)
index 0000000..f388a0f
Binary files /dev/null and b/audio/foundbig.wav differ
diff --git a/audio/shuffle.wav b/audio/shuffle.wav
new file mode 100755 (executable)
index 0000000..25bc499
Binary files /dev/null and b/audio/shuffle.wav differ
diff --git a/gpl.txt b/gpl.txt
new file mode 100755 (executable)
index 0000000..5b6e7c6
--- /dev/null
+++ b/gpl.txt
@@ -0,0 +1,340 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+\f
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+\f
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+\f
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+\f
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                           NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+\f
+           How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/images/.xvpics/background.bmp b/images/.xvpics/background.bmp
new file mode 100755 (executable)
index 0000000..24ea5c6
--- /dev/null
@@ -0,0 +1,5 @@
+P7 332
+#IMGINFO:800x600 RGB (1440054 bytes)
+#END_OF_COMMENTS
+80 60 255
+o\8foo\8foo\8foo\8foo\8bsk\93\9a\97\97\97\97\97\96\97\97\97\97º\9b¾\9bº\9a¿\9aº¿\9aº\9fº¾\9bº\9eº\9fºº\9fº\9a¿º\9e»\9a¾»\9a¾\9bº\9b\96\9b·\9b\96\97\93s\93o\93\93s\93so\8foRRooo\8foo\8fon\8fo\97\97\97\97\96\97\97\97\97\9a·\9b\9a»\9a»\9eº\9b¾º\9b¾\9a¿º\9a¿\9aº¾\9b¾\9a»¾\9a»\9eº¿\9aº\9fº\9e\8eu\97mrr\96nqons\93monNnoSôøô\94OõÔøô3´²V·s\97\9a\93\9b\97\97\97\96\9b¾\9b\96VRµV\96\96u\9b\95{\9aº{\9a\9avzvw\95z\9b°v»¾\9a¿\9a¾º¾\9ai»¶¶ÿ\91\97¶ÿ)Ú\8esÖmÿ¶ÛoRõ°øôO\99ð\96ø2µôRØôôô¶ÔS\95µvwôÔøøôøµôôørøø\90ÖøÔÔôøøõøq¶ðø~»½»¾\9eº¿\99n\99\92q\96\96\9bm\97\91\9arj\8ennoRõøôø\907ô°øsøøÔ±øôõÔøqôøô3øôµøÐøvôÔøRøôÕvÔôvôôø±øq\96ÔøR¿\9eº¾º\9e»¾¾\9a¾º\9f½\93\96\96º\93\9a\96\96³r\92sovôøÐôøµøðÔ\96ÔôôWøôøôRµôøøÔôøôøõøÔôøô\96øQ\9bÔôørøøôôø´²øôz¾»\9eº¾¾\9a¿º\9e¾º¾\9b¹ßÛ¿ÛÞ»ÛߺÛsooQ\95rRSRRw\92w\97r\97\95ôøÔôµrøÔôÕÔ±VV\9a\9b\9a\9a\9a»\9dvzÝ\9a\94s\99\91±u\91RyºV\99Þ¾¾\9a¾º¾\9fº¾\9a¾¾»\9e¶Þß߻ڿÛß»Ú\9bo\8foo\8fo\93\97\97s\97\96\97·\9b\9am\96\9e»\9a\9bº\9b\9aº\9bº\9fº¾¾½º¾½Þ½¾½Ý¾½Þ½¾Ý½ºÜ¾Ý¾Ý½¾Ù½¿\9eº¾\9a¿½»\9eº\96º\96º\96\96\97\96\96\96\96o\8foo\8fo\97\97\93\97\92\9b\97\97\9e»\96\9a\9bº\9f\9a»\9aº\9bº\9fݺ¾½¾½¾Þ½½¾Ý¾½ÙݽÝÙ½ÜÚ¼Ýپݽݾ½º¾¾º\9e¿º¾\9aºßÞÛ¾ßÛ»ßÚ¿·o\8fo\8fwm\92Ni\92Lj\91rl\92\92\91\92r\91\9fº\9b\9a»½¾½Þ¾½¾½Ù¾ÜÙݽÝÙ¼ÞØݽÙÝØݹÝØÝÙ¾½Ý½Þ½½»¾\9a¾¿µ¿ßÞßÚß»ßÚ¿·o\8fs\97\93\91¶·µÛ\92\92¶¶¶I\91n\91·\95\9bº\9b¾\9a¾Þ½¾½¾Ù½ÝÝؾÜÙ½ÝÙݼÚÜÙÝؽÙÜÙÙÝؽ޽ݽ¾Ù½Þ\9eº\9a\96\99·\95\9a\96\9a\92\96\97\95\93\97s\97·»»×»Ú¿ÛßÚ¿ÛߺßßÚ¿ÛßÚÞßÞÞßÞÞþÞÚýßÝþÞúÞÞþÚÞýÞúÞÞúÝÿÙÞþÞúÝßÞþÞÞÞÛÞº¾\9b½¿º\9eº¿\9a»\9a\97\93\97\97\93¿×»Ú»ß»ßÚß»ÞÛ¿ÛÞß»þ¾ÿÞÞßÝÛýßÝÿÝÚþÞÞþÙúúÙúýÚúÞùÞþÚþÞÙþÞúÞÞþÞÞÞÞÛ¾º¾¾º\9e¾»\9d»º\9b\97\93\97\97\93¿×»Ú¿Ûß»ÞÛ¿ÚßÛ¿ÚßÛÞÞßÞÞÞþÞÞÞúÞÞþÞùÚùúÚýöùúÕúúùÚùúùÚþÞùÞÞúÞþÞÞÞÞ»¹¿½¾\9a¾¾»¾\9eº\97\93\97\97\93¿×»Þ»ÛߺßÛ¿ÚßÛ¿ÚßÞÞßÞþÞÞÞúÞÞþÞÞùúÚùúùÖùöùöõöùöùöùÚùúÞþÙþÚþÝûÝßÝ»¾º½¿\9d»½¿½»\9e\97\93\97\97\93¿×»Þ»ÛߺßÛ¿ÚßÛ¿ÚßÞÞßýßÝßþÞÚýÞúÙúúùöùÖùöõõúõöùöõöùöõþÖýÞúÞùÞþÚþÞº¾\9a¾¾¾¾º¾¾\9eº\97\93\97\97\93¿×»Þ»ÛߺßÛ¿ÚßÛ¿ÞÞßÚþÞÞÞþÞÞúÞùÚþõúõúÕúõöùöõúõöõúõöùöõúÝúÞþÙÿÙÞþÞº½»½¿\9d»½¿½»½\97\93\97\97\93¿×ºßÛ¿ÛºßÛß¾ÛßÚßÞÞÞÞþÞßÝûÝþÚùúÙöùöùúõöõúõöõúõöÙöõöùöùöùÞúÞýÚþÞÞÖ½¾¾\9eº¾¾¾º¾¾\97\93\97\97\93¿×¾Ûß»ÛÞ»ßÛ¾ÛÞßÞßÞþÞÞÚþÞÞÞùþÚõúõúùöõúõöÕúõöõúõöùöõöùöùöÙþÚýÞúÞþº¼Ú¾\9e¾º¾¾¾º\9e\97\93\97\97\93¿×¾Ûß»ÞÛ»ßÛ¾ßÚßÞÞþÞÞÞþÞÚÿÝúÙúùúõúÕöõúõöùöõöùöõöùöõúõöùöÙúúÝþÚþ޵ݽ¿½»½¿\9d»½¿\97\93\97\97\93¿ÚÛ¿Û»ÞÛ¿ÛßÚÞßÞßÞÞÞþÞÚÞþÞùÞöùúÙöõúõöõúõöùöõöùöõöùöõúõöõÚùúýÚÞúÞٽݺ¾¾\9eº¾¾¾º\97\93\97\97s\97º\9b\9a·\9b\9a»\9a\9b»½º¾¾½¾Ý½Ý¹Ý¾ÜÙÔøÐõðÔìðìðìðìððìðìððìðìðìððìðìðÔ°n²\91\97l²½Ù½¾¾¾º¾¾¾\9a\97\93\97\97s\96\92r\91r\96»\9a\9b\97º¾¾½¿½½Þ¹Ý½Ý½ÙØùÐôðÔððìðìððìðìðìððìðÌððìðìðìððô±L\8d\92lm\95ÝÙ½Þ\9e¾º¾¾¾º\97\93\97\97\91Ûm·q»\9bº\9b\9a¾¾º½¿Ü¾Ý½¾ØÞØÙØôÐðôÐððìðìðìððìðìððìðìðìððìðìðÔÙØùØÙؾܾܺ¾¾¾¾\9a¾¾\97\93\97\97sljHmNm\96v\93u\97\95\99\96\99\96\99\95¹\99µ\99\94µ°µÐ°¬Ð¬¬Ì̬ȬĮ̬̬̀Ì̬̬ÌȬ̬̬Ð\94µ´°µ´\99Ù½Þ¾\9e¾º¾¾¾º\97\93\97\97\97ÿÿÛÿÿÿÞÿÿÿßûÿÿÿßÿþÿÿÿÿßþÿÿÿúÿÿÿúÿÿÿúÿÿûÿþûÿÿþûÿÿúßÿûþÿÿûþÿÿÿþÿÿ¶½Ù¾¾½¿\9d»½¿¹\97\93\97s»ûÿßÿÿÿßþÿûßÿÿÿÿßÿþÿÿÿÿßþÿÿûÿþÿÿûþÿûÿþÿûÿþûÿÿÞûÿÿúÿÿûþÿÿûþÿÿÿÿþßÖ½¹¿½Tß\99¿½¿¹\93\97s\97·ÿßÿÿÿßûÿþßÿÿÿÿßÿÿÿþÿßÿÿûþÿÿÿþÿûÿþÿûßÿúÿÿûþÿÿûþÿûÿþûÿÿþûÿÿþÿÿßÿþ·¸0\9a\18º½¿½»\9d¿\93w\93\97·ÿßÿûÿßÿÿÿÞÿÿûßÿÿÿÿþßÿÿÿÿþÿÿÿÿÚÿÿÿúÿÿÿúÿÿûþÿûÿþÿûÿþûÿÿþûÿßÿþÿÿÿÿµ\9a\18\18u¾¾½»\9d¿º\93w\93\93\9bÿûÿÿßÿÿÿßÿúÿßÿÿÿÿÿßþÿÿÿÿÿÞÿÿûÿþÿÿÿúÿÿûþÿÿûþÿûÿþûÿÿÞûÿÿþÿÿûÿþÿßÿÖ\9eP¾¾¹¾¾¾¾º\9f\93w\93\93\97ÿÿÿÿßÿÿÿÛþÿÿßÿÿÿÿßÿþÿÿÿÿÿÞÿûÿÿþÿÿûþÿÿûþÿÿûþÿÛÿþûÿÿþûÿÿþÿÿÿÿÞÿÿÿ¶¾¹¿½¾¾½º¾\9fº\93w\93\93\97ÿÿÿÿßÿÿûßÿþÿßÿÿÿÿßÿþÿÿÿÿÿÞûÿÿÿþÿÿûþÿÿûþÿßûþÿûÿþûÿÿþÿÿûÿþÿßÿÿþÿÿ¶¾ºp\8d¾¾½¿½\9bº\93w\93\93\97ÿÿûßÿÿÿÿßÿÿûßþÿÿßÿÿÿÿþÿßÿÿÿþÿÿÿûþßÿÿþûÿÿþÿÿûþÿÿÿÿÚÿÿÿþÿÿÿûþÿßÿÿºº\95àà\99¾¾¾º\9bº\93w\93\93\97ÿûÿßÿÿÿßÿÿûÿßþÿÿßÿÿÿÿþßÿÿÿÿþÿûßÿþÿÿÿþûÿÿÿþÿûÿÞÿÿÿþûÿÿÿþÿÿßÿþÿÿÿ¶¾làà\96¾½»\9e»\9a\93w\93\93\93\92\91w±r\92\96\92\92\92\96\91\93\95\92\96\92µ\92\96\91\96\92µ\96\91\96\92µ\92\95²\95\91²\95\92µ\91²\91±\96±\91²\95\91²\95±\92\95²\95\92µ\96\91\96\92µ\92r½¾\99\92½¿\9a»\9eº\9b\93w\93\93\93w\93\93\9a·\9b\97\9a\97\9b\9b\9bº\9b\9a¾º¾¾¾¾½Ù¾½¾Ý¾½¾ÝÙÜÙØÙÜÙØÙÔøÕØÙØÝÙÜÙ½ØÞ½Ù¾¾½¾¾½¿½º¾¾½»\9e»\9eº\9b\93\93w\93\93\93rnM\97rn\96r\97\9a·\9b\96\9b»\9a¾º\9e¾¾º¾½Þ½¾½Þ½¾½Þ¹½Þ½ÝؽÙÙÜÙÝØݹÝØݺ½Þ¾½¾¾½¾¾¾¹¾¾¾º\9fº¾\9bº\9e\93\97\93w\93\93\93\96\8dÛq¶n¶\97º\97\9b\97\9a·\9b\9d»½¿½»½¿\9dÞ¹¾Ý¾½¾Ý¾½½Þ½¾Ý¾¹ÜÙÝÙܺ½Þ½¾¾½¾¾Ý¾¾½»½¾¾\9eº»\9eº\9fº\96\97\93\97\93w\93\93\93MnnmOq\8ev\96\9b·\9b\96\9b\97º\97\9eº¾¾¾º¾\9e¾Ý¾¹Þ½¾½Þ½½¾Ý¾½Þ½¾Ù¼Ù¾¾Ý¾¾½¾½¾Þ½¾¾º½¾¾¾\9bº\9e»¾\9a»\96s\97\97\93w\93\93\93w\93\93\93w\93\9b\97\9a\97\9b·\9a\97\9b\96»\97\9a¾¾¾º\9e¾¾ºÝ¾½¾Ý¾½¾Ý½¾Ý¾½¾½Ú¾½¾¾½¾Ý¾¾½¾¾½¾º¾¾¾\9a»¾\9a»\9eº\97\93\97s\97k\93s\93\93\97s\93\93\97s\92\9b·\9b\96\9b\97\9a·\9b\97\9a\97»\96\9bº¾\9e¾º¾¾¾½Þ½½¾Ù¾½¾Ý¾¾½¾¾½Þ½¾¾½¾ºÝ¾¾½¾¾¾º\9e»\9a¾»\9eº\97\93w\97\93\96\97kkk\97\93s\97\93\93r\97\93\93\9b\97\9a·\9b\96\9b\97º\97\9b\97\9a\97»\96\9fº¾½»½¿½¾½¾Ý¾½º¾½Þ¾½¾½¾¾Ý¾¾½¾¾½º¾½¿º\9b¾\9a¿º\9a¿\96\97\93\97w\93\96\97kkko\8fw\93\92\93w\93\93\93\97\97\9a\97\9b\9b\97\9b\96»\97\9a\97\9b\97º\97\9b½»\9eº¾¾º¾¾½¾¾½¾Ý¾¾½¾¾¹Þ¾½¾¾¾\9a¾º¿\9a¾\9bº¾\9bº\9e\93\97\97\93\97\96s\97\97kkkokj\93\97\93s\93\97\93s\93\97\9a·\9b\96\9b\97»\96\9b\97\9a·\9b\96\9b\97\9bº\9b½»¾\9eº¿\99¿º¾\9eº¿º\9e¾º\9e»¾¾\9a¾º\9fº¾\9bº\9e»º\9e»\9a\97\97\93\96\97\93\97w\93\97kkkokjk\93\93s\97\93\93s\97\93\96\9b·\9b\96\9b\97º\97\9b\96\9b·\9b\96\9b\97\9a·\9b\9a¾»\9eº¾¾\9a¿º¾\9eº¾\9b¾¾º\9eº¿\9a¾»\9a¾\9bº\9a»\97\9a\93\97\97s\97\93\97\97\92\97\97\93kkkokjkk\93\93\97s\93\93\97s\93\96\97\9b·\9a\97\9b\96»\97\9a\97\9b·\9a\97\9b\96\9b·\9b\9aº¿\9d»¾º\9e¿¹\9fº¾º\9e»¾\9b\96\97\97\9b\92\9b\97·w·v·s\97\97\93\97\97\92w\97\93\97\93kkkokjkk\8bw\93\93s\93\97\93s\92\9b»\97\9a\97\9b\9b\97\9b\96»\97\9a\97\9b\96»\97\9b\96\9bº»\9d¿º¾\9a¿º\9eº\9b\97\96\97\97\97\97\97¶w·{³z·w\93\97\97\93\97\92\97\97s\97\97\93\97kkkokjkkk\8bos\93\97\93r\93\93\97\97\9b\96\9b·\9a\97\9b\97\9a·\9b\96\9b\97º\97\9b\97\9a·\97\9b\96\97\97\97\96\97\97\9b\93\9b\96\97\97\97\97\96\97\97\97\97·v·w\97\97\93\97\96\93\97\93w\97\93\97\97\92kkkokjkkk\8bO\8bs\93\8fv\93\93s\97\93\9b\9b\97\9a\97»\97\9a\97\97\9b\96\97\97\97\97\97\96·w·w¶w·w»\93\9a\97\97\97\97\96\97\97\97\97\97\96\97\97\97\97\93\97v\93\97\97\93\97\97\93\97v\93\97kkkokjkkk\8bO\8bjs\93o\93\93s\93\97\93\9b\96\97\97\97\97\97\96\97\97\97\97\96\97\97\97\97\9b\92\9b·w·v·w·w·\96\97\97\97\97\9a\93\9b\97\97\97\96\93\97w\93\97\97\93\97\96\93\97w\93\97\93o\93kkkokjkkk\8bO\8bjkoo\93\93s\8fs\93\93\97\97\96\97\97\97\97\97\96\9b\93\9b\97\96\97\97\97\97\97\96\97\97\97\97\96\97»s»w¶w·w·\96\97\97\97w\93\97\96\93\97\97\93\97w\93\97\92\93o\93o\8fkkkokjkkk\8bO\8bjkkks\93\93s\93\8fs\93s\93\93s¶w·w»sºw·\97\97\96\97\97\97\97\97\96\97\97\97\9b\92\9b\97\97\97\97\96\97\97\97\97\97\92\97\97\93w\97\93\97\97\92o\93o\93o\8fs\8fkkkokjkkk\8bO\8bjkkkok\93s\93\8fs\93s\93\93o\92s\93\93s·w·z³{·\97\97\96\97\97\97\97\96\97\97\97\97\97\9a\93\9b\97\97\96\97\93\97\93\97w\93\97\96\93o\93o\93o\8fs\8fo\93okkkokjkkk\8bO\8bjkkkok\93o\93s\93\93s\8fs\92\93s\93\8fs\93s\97\97\97\96\97\97\97\97\97¶w·w·v·w·\9b\93\9a\97\97\97s\97\97\92\97\93\97\97s\8fo\93o\8fs\8fs\8fo\93okkkokjkkk\8bO\8bjkkkokkj\93s\93\93s\8fs\93\93s\93\8fs\93s\93\93o\93s\93\97\93\96\97\97\9b\93\9a\97\97\97\97\97\96\97\97\97\97\93\97\96\93s\93s\8fo\93o\8fs\8fs\8fo\93o\93okkkokjkkk\8bO\8bjkkkokkjk\93s\93\93s\8fs\93\93s\93o\93\93s\93\93o\93s\93\93s\8fs\93\93s\92\97\97\97\97\97\96\97\97\93\97s\8fs\8fs\8fo\93o\93o\8fs\8fs\8eo\93okkkkokjkkk\8bO\8bjkkkokkjkko\93\93s\93\8fs\93s\93\93o\93s\93\93s\8fs\93\93s\93\8es\93s\93\93o\93s\93\93o\93o\93o\8fs\8fso\8fs\8fs\8fo\93o\93o\8fnGgkgkjK\87Kkjkkkkkjkkk\8fK\8bjko\93s\8fs\93\93s\93o\93\93s\93\93o\93s\93\93s\8fs\93\93s\93o\92\93o\93o\93o\8fso\93o\8fs\8fs\8fo\93o\8fs\8fskfkGjkgkjK\87KkjkgkjkgkkJkgkkjgkok\8fno\93s\93\93o\93\93s\93s\8f\93s\93s\93\8fs\93o\93o\93o\8fs\8fo\93os\8eo\93o\93o\8fs\8fs\8fokfGkfkgkgkjK\87KkjkgkjkgkkJkgkkjgkkjkgK\8bJgkkkjgkkkjoo\8bso\8fo\93o\8fs\8fs\8fos\8fs\8fn\93o\93o\8fs\8fo\93GjgkGfkgj
\ No newline at end of file
diff --git a/images/background-al.bmp b/images/background-al.bmp
new file mode 100755 (executable)
index 0000000..3d21942
Binary files /dev/null and b/images/background-al.bmp differ
diff --git a/images/background-old.bmp b/images/background-old.bmp
new file mode 100755 (executable)
index 0000000..bd0d0b9
Binary files /dev/null and b/images/background-old.bmp differ
diff --git a/images/background.bmp b/images/background.bmp
new file mode 100755 (executable)
index 0000000..4f97ff8
Binary files /dev/null and b/images/background.bmp differ
diff --git a/images/letterBank.bmp b/images/letterBank.bmp
new file mode 100755 (executable)
index 0000000..069210f
Binary files /dev/null and b/images/letterBank.bmp differ
diff --git a/images/numberBank.bmp b/images/numberBank.bmp
new file mode 100755 (executable)
index 0000000..4720148
Binary files /dev/null and b/images/numberBank.bmp differ
diff --git a/images/smallLetterBank.bmp b/images/smallLetterBank.bmp
new file mode 100755 (executable)
index 0000000..f9ad926
Binary files /dev/null and b/images/smallLetterBank.bmp differ
diff --git a/makefile b/makefile
new file mode 100755 (executable)
index 0000000..a473217
--- /dev/null
+++ b/makefile
@@ -0,0 +1,26 @@
+CFLAGS=-Wall `sdl-config --libs --cflags` -lSDL_mixer
+CFLAGS2=-Wall
+CC=cc
+
+LIBS=
+
+C_FILES=src/dlb.c src/linked.c src/sprite.c src/ag.c
+OBJ_FILES=src/dlb.o src/linked.o src/sprite.o src/ag.o
+OUT_FILE=ag
+
+all:ag
+
+ag: $(OBJ_FILES)
+       $(CC) $(CFLAGS) -o $(OUT_FILE) $(OBJ_FILES)
+
+src/dlb.o: src/dlb.c
+       $(CC) $(CFLAGS2) -c -o $@ $^
+
+src/linked.o: src/linked.c
+       $(CC) $(CFLAGS2) -c -o $@ $^
+       
+src/sprite.o: src/sprite.c
+       $(CC) $(CFLAGS2) -c -o $@ $^
+
+src/ag.o: src/ag.c
+       $(CC) $(CFLAGS2) -c -o $@ $^
diff --git a/makefile.WIN32 b/makefile.WIN32
new file mode 100755 (executable)
index 0000000..c7047a2
--- /dev/null
@@ -0,0 +1,28 @@
+SDL_FLAGS = -Wall -O2 -I/usr/local/include -Dmain=SDL_main -I/usr/include/mingw -DWIN32 -Uunix -mno-cygwin -DHAVE_OPENGL\r
+SDL_LIBS = -L/usr/local/lib -lmingw32 -lSDLmain -lSDL -mwindows -mno-cygwin -lSDL_mixer\r
+\r
+CFLAGS2=-Wall -O2 -I. -I/usr/local/include -Dmain=SDL_main -I/usr/include/mingw -DWIN32 -Uunix -mno-cygwin -DHAVE_OPENGL -c\r
+CC=gcc\r
+\r
+LIBS=\r
+\r
+C_FILES=src/dlb.c src/linked.c src/sprite.c src/ag.c\r
+OBJ_FILES=src/dlb.o src/linked.o src/sprite.o src/ag.o\r
+OUT_FILE=ag\r
+\r
+all:ag\r
+\r
+ag: $(OBJ_FILES)\r
+       $(CC) $(SDL_FLAGS) -o $(OUT_FILE) $(OBJ_FILES) $(SDL_LIBS)\r
+\r
+src/dlb.o: src/dlb.c\r
+       $(CC) $(CFLAGS2) -c -o $@ $^\r
+\r
+src/linked.o: src/linked.c\r
+       $(CC) $(CFLAGS2) -c -o $@ $^\r
+       \r
+src/sprite.o: src/sprite.c\r
+       $(CC) $(CFLAGS) -c -o $@ $^\r
+\r
+src/ag.o: src/ag.c\r
+       $(CC) $(CFLAGS2) -c -o $@ $^\r
diff --git a/readme b/readme
new file mode 100644 (file)
index 0000000..62d0050
--- /dev/null
+++ b/readme
@@ -0,0 +1,15 @@
+Anagramarama 0.1
+(c) 2003 Colm Gallagher - under the terms of the GPL - see gpl.txt for details.
+
+Version 0.1 -   still needs a high score table and some
+               informational messages, but you can play a game.
+
+Need to do a major code clean up too and document some stuff...
+
+I'll get round to it for the v1 release
+
+in the meantime have fun and let me know if you find any problems
+
+
+--
+colm@coralquest.com
diff --git a/src/ag.c b/src/ag.c
new file mode 100755 (executable)
index 0000000..ca5f943
--- /dev/null
+++ b/src/ag.c
@@ -0,0 +1,1435 @@
+/*
+Anagramarama - A word game.  Like anagrams?  You'll love anagramarama!
+Copyright (C) 2003  Colm Gallagher
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Contact Details: colm@coralquest.com
+                12 Weston Terrace, West Kilbride, KA23 9JX.  Scotland.
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <string.h>
+#include <SDL/SDL.h>
+#include <SDL/SDL_mixer.h>
+//#include <pthread.h>
+
+#include "dlb.h"
+#include "linked.h"
+#include "sprite.h"
+#include "ag.h"
+
+//module level variables for game control
+char shuffle[]  = "£££££££";
+char answer[]   = "£££££££";
+
+char* rootWord;
+int updateAnswers = 0;
+int startNewGame = 0;
+int solvePuzzle = 0;
+int shuffleRemaining = 0;
+int clearGuess = 0;
+//int winGame = 0;
+
+int gameStart = 0;
+int gameTime = 0;
+int stopTheClock = 0;
+
+int totalScore = 0;
+int score = 0;
+int answersSought = 0;
+int answersGot = 0;
+int gotBigWord = 0;
+int bigWordLen = 0;
+int updateTheScore = 0;
+int gamePaused = 0;
+int foundDuplicate = 0;
+int quitGame = 0;
+int winGame = 0;
+
+int letterSpeed = LETTER_FAST;
+
+// Graphics cache
+SDL_Surface* letterBank = NULL;
+SDL_Surface* smallLetterBank = NULL;
+SDL_Surface* numberBank = NULL;
+struct sprite* clockSprite = NULL;
+struct sprite* scoreSprite = NULL;
+
+// audio vars
+Uint32 audio_len;
+Uint8 *audio_pos;
+
+struct sound{
+       char* name;
+       Mix_Chunk *audio_chunk;
+       struct sound* next;
+};
+
+struct sound* soundCache = NULL;
+/*******************************************************************************/
+Mix_Chunk* getSound(char* name){
+
+struct sound* currentSound = soundCache;
+
+       while (currentSound!=NULL){
+
+               if(!strcmp(currentSound->name, name)){
+                       return currentSound->audio_chunk;
+                       break;
+               }
+               currentSound = currentSound->next;
+       }
+
+       return NULL;
+}
+
+/*******************************************************************************/
+void pushSound(struct sound** soundCache, char* name, char* filename){
+
+struct sound* thisSound = NULL;
+
+       thisSound = malloc(sizeof(struct sound));
+       thisSound->name = malloc(sizeof(name)*strlen(name));
+       strcpy(thisSound->name, name);
+       thisSound->next = *soundCache;
+
+       // Attempt to load a sample
+       thisSound->audio_chunk = Mix_LoadWAV(filename);
+
+       *soundCache = thisSound;
+}
+
+/*******************************************************************************/
+void bufferSounds(struct sound** soundCache){
+
+       pushSound(&(*soundCache),"click-answer", "audio/click-answer.wav");
+       pushSound(&(*soundCache),"click-shuffle", "audio/click-shuffle.wav");
+       pushSound(&(*soundCache),"foundbig", "audio/foundbig.wav");
+       pushSound(&(*soundCache),"found", "audio/found.wav");
+       pushSound(&(*soundCache),"clear", "audio/clearword.wav");
+       pushSound(&(*soundCache),"duplicate", "audio/duplicate.wav");
+       pushSound(&(*soundCache),"badword", "audio/badword.wav");
+       pushSound(&(*soundCache),"shuffle", "audio/shuffle.wav");
+       pushSound(&(*soundCache),"clock-tick", "audio/clock-tick.wav");
+
+}
+
+/*******************************************************************************/
+void clearSoundBuffer(){
+
+struct sound* currentSound = soundCache, *previousSound = NULL;
+
+       while (currentSound!=NULL){
+
+               Mix_FreeChunk(currentSound->audio_chunk);
+               free(currentSound->name);
+               previousSound = currentSound;
+               currentSound = currentSound->next;
+               free(previousSound);
+       }
+}
+
+/***********************************************************/
+int nextBlank(char* string){
+// determine the next blank space in a string - blanks are indicated by pound £ not space
+
+int i;
+int found=0;
+
+       for(i=0;i<7;i++){
+               if (string[i]==SPACE_CHAR){
+                       found = 1;
+                       break;
+               }
+       }
+       if (found){
+               return i+1;
+       }
+       else{
+               return 0;
+       }
+}
+
+/***********************************************************/
+char* shiftLeftKill(char* string){
+// shift a string of characters 1 character to the left
+
+int i;
+char start;
+char* newString;
+int len;
+
+       len = strlen(string);
+
+       newString = malloc(sizeof(char) * (len));
+
+       start = string[0];
+
+       for (i=1;i<len;i++){
+               newString[i-1] = string[i];
+        }
+
+       newString[len-1] = '\0';
+
+       return(newString);
+       free(newString);
+}
+
+/***********************************************************/
+char* shiftLeft(char* string){
+// shift a string of characters 1 character to the left
+// move the first character to the end of the string
+
+int i;
+char start;
+char* newString;
+int len;
+
+       len = strlen(string);
+
+       newString = malloc(sizeof(char) * (len+1));
+
+       start = string[0];
+
+       for (i=1;i<len;i++){
+               newString[i-1] = string[i];
+        }
+
+       newString[len-1] = start;
+       newString[len] = '\0';
+
+       return(newString);
+       free(newString);
+}
+
+/***********************************************************/
+void ag(struct node** head, struct dlb_node* dlbHead, char** guess, char** remain){
+// generate all possible combinations of the root word
+// the initial letter is fixed (hence the space character
+// at the end of the possible list)
+
+char*  newGuess;
+char*  newRemain;
+int    totalLen=0, guessLen=0, remainLen=0, i;
+
+       // allocate space for our working variables
+       guessLen = strlen(*guess);
+       remainLen = strlen(*remain);
+       totalLen = guessLen + remainLen;
+
+       newGuess = malloc(sizeof(char) * (totalLen+1));
+       newRemain = malloc(sizeof(char) * (totalLen+1));
+
+       // move last remaining letter to end of guess
+       strcpy(newGuess, *guess);
+       strcpy(newRemain, *remain);
+       newGuess[guessLen] = newRemain[remainLen-1];
+       newGuess[guessLen+1] = '\0';
+       newRemain[remainLen-1] = '\0';
+
+//     printf("%s\n", newGuess);
+
+       if(strlen(newGuess) > 3){
+               if (dlb_lookup(dlbHead,shiftLeftKill(newGuess))){
+                       push(&(*head), shiftLeftKill(newGuess));
+               }
+       }
+
+       if (strlen(newRemain)){
+               ag(&(*head), dlbHead, &newGuess, &newRemain);
+
+               for (i=totalLen-1;i>0;i--){
+                       if(strlen(newRemain) > i){
+                               strcpy(newRemain, shiftLeft(newRemain));
+                                       ag(&(*head), dlbHead, &newGuess, &newRemain);
+                       }
+               }
+       }
+       // free the space
+       free(newGuess);
+       free(newRemain);
+}
+
+/***********************************************************/
+void solveIt(struct node* head){
+
+struct node* current = head;
+
+       while (current != NULL){
+               current->found = 1;
+               current = current->next;
+       }
+}
+
+/***********************************************************/
+void ShowBMP(char *file, SDL_Surface *screen, int x, int y){
+       SDL_Surface *image;
+       SDL_Rect dest;
+
+       /* Load the BMP file into a surface */
+       image = SDL_LoadBMP(file);
+       if ( image == NULL ) {
+               fprintf(stderr, "Couldn't load %s: %s\n", file, SDL_GetError());
+               return;
+       }
+
+       /* Blit onto the screen surface.
+        *        The surfaces should not be locked at this point.
+        */
+       dest.x = x;
+       dest.y = y;
+       dest.w = 50;
+       dest.h = 50;
+
+       SDL_SetColorKey(image, SDL_SRCCOLORKEY, SDL_MapRGB(image->format,255,0,255));
+
+       SDL_BlitSurface(image, NULL, screen, &dest);
+
+       /* Update the changed portion of the screen */
+       //SDL_UpdateRects(screen, 1, &dest);
+       SDL_FreeSurface(image);
+}
+
+/***********************************************************/
+/*void displayAnswerBoxes(struct node* head, SDL_Surface* screen){
+// for each letter to each answer in the nodelist,
+// display a neat little box to fill in later
+
+struct node* current = head;
+SDL_Rect outerrect, innerrect;
+int i;
+
+char imagePath[] = "images/small-£.bmp";
+int twoOnALine = 0;
+
+       // width and height are always the same
+       outerrect.w = 17;
+       outerrect.h = 17;
+       outerrect.x = 70;
+       outerrect.y = 380;
+
+        while (current != NULL){
+
+               // update the x for each letter
+               for (i=0;i<current->length;i++){
+                       SDL_FillRect(screen, &outerrect,0);
+                       innerrect.w = outerrect.w - 2;
+                       innerrect.h = outerrect.h - 2;
+                       innerrect.x = outerrect.x + 1;
+                       innerrect.y = outerrect.y + 1;
+
+                       if (current->guessed){
+                               SDL_FillRect(screen, &innerrect,SDL_MapRGB(screen->format,255,255,255));
+                       }
+                       else{
+                               SDL_FillRect(screen, &innerrect,SDL_MapRGB(screen->format,217,220,255));
+                       }
+
+                       if (current->found){
+                               imagePath[13] = current->anagram[i];
+                               ShowBMP(imagePath, screen,  innerrect.x+2, innerrect.y );
+                       }
+
+                       outerrect.x += 18;
+               }
+
+               if ( twoOnALine<4 ){
+                       // shift x along to show the next word
+                       outerrect.x += (8-current->length) * 18;
+                       twoOnALine++;
+               }
+               else{
+                       // reset the x, ready for the next line
+                       outerrect.x = 70;
+                       twoOnALine = 0;
+                       // update the y for each word
+                       outerrect.y += 19;
+               }
+               current=current->next;
+       }
+       SDL_Flip(screen);
+}
+*/
+/***********************************************************/
+void displayAnswerBoxes(struct node* head, SDL_Surface* screen){
+// for each letter to each answer in the nodelist,
+// display a neat little box to fill in later
+
+struct node* current = head;
+SDL_Rect outerrect, innerrect, letterBankRect;
+int i;
+int numWords = 0;
+int acrossOffset = 70;
+int numLetters = 0;
+int listLetters = 0;
+//char imagePath[] = "images/small-£.bmp";
+
+       // width and height are always the same
+       outerrect.w = 16;
+       outerrect.h = 16;
+       outerrect.x = acrossOffset;
+       outerrect.y = 380;
+
+       letterBankRect.w = 10;
+       letterBankRect.h = 16;
+       letterBankRect.y = 0;
+       letterBankRect.x = 0; // letter is chosen by 10*letter where a is 0
+
+        while (current != NULL){
+
+               // new word
+               numWords++;
+               numLetters =0;
+
+               // update the x for each letter
+               for (i=0;i<current->length;i++){
+
+                       numLetters++;
+
+                       SDL_FillRect(screen, &outerrect,0);
+                       innerrect.w = outerrect.w - 1;
+                       innerrect.h = outerrect.h - 1;
+                       innerrect.x = outerrect.x + 1;
+                       innerrect.y = outerrect.y + 1;
+
+                       if (current->guessed){
+                               SDL_FillRect(screen, &innerrect,SDL_MapRGB(screen->format,255,255,255));
+                       }
+                       else{
+                               SDL_FillRect(screen, &innerrect,SDL_MapRGB(screen->format,217,220,255));
+                       }
+
+                       if (current->found){
+                               innerrect.x+=2;
+//                             innerrect.y-=1;
+                               letterBankRect.x = 10 * ((int)current->anagram[i] - 97);
+                               //imagePath[13] = current->anagram[i];
+                               //ShowBMP(imagePath, screen,  innerrect.x+2, innerrect.y );
+                               SDL_SetColorKey(smallLetterBank, SDL_SRCCOLORKEY, SDL_MapRGB(smallLetterBank->format,255,0,255));
+                               SDL_BlitSurface(smallLetterBank, &letterBankRect, screen, &innerrect);
+                       }
+
+                       outerrect.x += 18;
+
+               }
+
+               if (numLetters > listLetters){
+                       listLetters = numLetters;
+               }
+
+               if (numWords == 11){
+                       numWords = 0;
+                       acrossOffset += (listLetters * 18) + 9;
+                       outerrect.y = 380;
+                       outerrect.x = acrossOffset;
+               }
+               else{
+                       outerrect.x = acrossOffset;
+                       outerrect.y += 19;
+               }
+
+               current=current->next;
+       }
+//     SDL_Flip(screen);
+}
+
+/***********************************************************/
+void checkGuess(char* answer, struct node* head){
+// check the guess against the answers
+struct node* current = head;
+int i, len;
+int foundWord = 0;
+
+       len = nextBlank(answer) -1;
+       if (len<0) len=7;
+       char test[len];
+       for (i=0; i<len; i++){
+               test[i] = answer[i];
+       }
+       test[len] = '\0';
+
+       while (current != NULL){
+
+               if (!strcmp(current->anagram, test)){
+                       foundWord = 1;
+                       if (!current->found){
+                               score+=current->length;
+                               totalScore+=current->length;
+                               answersGot++;
+                               if (len==bigWordLen){
+                                       gotBigWord = 1;
+                                       Mix_PlayChannel(-1, getSound("foundbig"), 0);
+                               }
+                               else{
+                                       // just a normal word
+                                       Mix_PlayChannel(-1, getSound("found"),0);
+                               }
+                               if (answersSought==answersGot){
+                                       // getting all answers gives us the game score again!!
+                                       totalScore+=score;
+                                       winGame = 1;
+                               }
+                               current->found = 1;
+                               current->guessed=1;
+                               updateTheScore = 1;
+
+                       }
+                       else{
+                               foundDuplicate = 1;
+                               Mix_PlayChannel(-1, getSound("duplicate"),0);
+                       }
+                       updateAnswers = 1;
+                       break;
+               }
+
+               current=current->next;
+       }
+
+       if (!foundWord){
+               Mix_PlayChannel(-1, getSound("badword"),0);
+       }
+}
+
+/***********************************************************/
+int nextBlankPosition(int box, int* index){
+// determine the next blank space in a string - blanks are indicated by pound £ not space
+
+int i;
+
+       switch(box){
+               case ANSWER:
+                       for(i=0;i<7;i++){
+                               if (answer[i]==SPACE_CHAR){
+                                       break;
+                               }
+                       }
+                       answer[i] = shuffle[*index];
+                       shuffle[*index] = SPACE_CHAR;
+                       break;
+               case SHUFFLE:
+                       for(i=0;i<7;i++){
+                               if (shuffle[i]==SPACE_CHAR){
+                                       break;
+                               }
+                       }
+                       shuffle[i] = answer[*index];
+                       answer[*index] = SPACE_CHAR;
+                       break;
+               default:
+                       break;
+
+       }
+
+       *index = i;
+
+       return i * (GAME_LETTER_WIDTH+GAME_LETTER_SPACE)+BOX_START_X;
+}
+/***********************************************************/
+void clickDetect(int button, int x, int y, SDL_Surface *screen, struct node* head, struct sprite** letters){
+
+struct sprite* current = *letters;
+
+       if (!gamePaused) {
+
+               while (current!=NULL&&current->box!=CONTROLS){
+                       if (x>= current->x && x<= current->x+current->w && y>= current->y && y<=current->y + current->h){
+                               if (current->box == SHUFFLE){
+                                       current->toX = nextBlankPosition(ANSWER, &current->index);
+                                       current->toY = ANSWER_BOX_Y;
+                                       current->box = ANSWER;
+                                       Mix_PlayChannel(-1, getSound("click-shuffle"), 0);
+                               }
+                               else{
+                                       current->toX = nextBlankPosition(SHUFFLE, &current->index);
+                                       current->toY = SHUFFLE_BOX_Y;
+                                       current->box = SHUFFLE;
+                                       Mix_PlayChannel(-1, getSound("click-answer"), 0);
+                               }
+
+                               break;
+                       }
+                       current=current->next;
+               }
+
+               if (x > CLEARBOXSTARTX && x < CLEARBOXLENGTH+CLEARBOXSTARTX && y > CLEARBOXSTARTY && y < CLEARBOXSTARTY+CLEARBOXHEIGHT){
+                       // clear has been pressed
+                       clearGuess = 1;
+               }
+
+               // check the other hotspots
+               if (x > ENTERBOXSTARTX && x < ENTERBOXLENGTH+ENTERBOXSTARTX && y > ENTERBOXSTARTY && y < ENTERBOXSTARTY+ENTERBOXHEIGHT){
+                       // enter has been pressed
+                       checkGuess(answer, head);
+               }
+
+               if (x > SOLVEBOXSTARTX && x < SOLVEBOXLENGTH+SOLVEBOXSTARTX && y > SOLVEBOXSTARTY && y < SOLVEBOXSTARTY+SOLVEBOXHEIGHT){
+                       // solve has been pressed
+                       solvePuzzle = 1;
+               }
+               
+               if (x > SHUFFLEBOXSTARTX && x < SHUFFLEBOXLENGTH+SHUFFLEBOXSTARTX && y > SHUFFLEBOXSTARTY && y < SHUFFLEBOXSTARTY+SHUFFLEBOXHEIGHT){
+                       // shuffle has been pressed
+                       shuffleRemaining = 1;
+                       Mix_PlayChannel(-1, getSound("shuffle"),0);
+               }
+       }
+
+       if (x > NEWBOXSTARTX && x < NEWBOXLENGTH+NEWBOXSTARTX && y > NEWBOXSTARTY && y < NEWBOXSTARTY+NEWBOXHEIGHT){
+               // new has been pressed
+               startNewGame = 1;
+       }
+
+       if (x > QUITBOXSTARTX && x < QUITBOXLENGTH+QUITBOXSTARTX && y > QUITBOXSTARTY && y < QUITBOXSTARTY+QUITBOXHEIGHT){
+               // new has been pressed
+               quitGame = 1;
+       }
+}
+
+/***********************************************************/
+int clearWord(struct sprite** letters){
+
+struct sprite* current = *letters;
+struct sprite* orderedLetters[7];
+int i;
+int count = 0;
+
+       for (i=0;i<=7;i++){
+               orderedLetters[i] = NULL;
+       }
+
+       // move the letters back up
+       while(current != NULL){
+               if(current->box == ANSWER){
+                       count ++;
+                       orderedLetters[current->index] = current;
+                       current->toY = SHUFFLE_BOX_Y;
+                       current->box = SHUFFLE;
+               }
+               current=current->next;
+       }
+
+       for (i=0;i<=7;i++){
+               if(orderedLetters[i] != NULL)
+                       orderedLetters[i]->toX = nextBlankPosition(SHUFFLE, &orderedLetters[i]->index);
+       }
+
+       return count;
+}
+/***********************************************************/
+void updateScore(SDL_Surface* screen){
+// we'll display the total Score, this is the game score
+
+char buffer [256];
+int i;
+SDL_Rect fromrect, torect, blankRect;
+
+       blankRect.x = SCORE_WIDTH * 11;
+       blankRect.y = 0;
+       blankRect.w = SCORE_WIDTH;
+       blankRect.h = SCORE_HEIGHT;
+
+       fromrect.x = 0;
+       fromrect.y = 0;
+       fromrect.w = SCORE_WIDTH;
+       fromrect.h = SCORE_HEIGHT;
+
+       torect.y = 0;
+       torect.w = SCORE_WIDTH;
+       torect.h = SCORE_HEIGHT;
+
+       // move the totalScore into a string
+       snprintf (buffer, sizeof (buffer), "%i", totalScore);
+
+       for (i = 0; i < strlen(buffer); i++){
+               fromrect.x = SCORE_WIDTH * ((int)buffer[i]-48);
+               torect.x = SCORE_WIDTH * i;
+               SDL_BlitSurface(numberBank, &fromrect, scoreSprite->sprite, &torect);
+       }
+}
+/***********************************************************/
+void updateTime(SDL_Surface* screen){
+
+// the time is x seconds  minus the number of seconds of game time
+int thisTime;
+int seconds;
+int minutes;
+int minute_units;
+int minute_tens;
+int second_units;
+int second_tens;
+
+SDL_Rect fromrect, torect, blankRect;
+
+       blankRect.x = CLOCK_WIDTH * 11;
+       blankRect.y = 0;
+       blankRect.w = CLOCK_WIDTH;
+       blankRect.h = CLOCK_HEIGHT;
+
+       fromrect.x = 0;
+       fromrect.y = 0;
+       fromrect.w = CLOCK_WIDTH;
+       fromrect.h = CLOCK_HEIGHT;
+
+       torect.y = 0;
+       torect.w = CLOCK_WIDTH;
+       torect.h = CLOCK_HEIGHT;
+
+       thisTime = AVAILABLE_TIME-gameTime;
+       minutes = thisTime/60;
+       seconds = thisTime-(minutes*60);
+       minute_tens = minutes/10;
+       minute_units = minutes-(minute_tens*10);
+       second_tens = seconds/10;
+       second_units = seconds-(second_tens*10);
+
+       fromrect.x = CLOCK_WIDTH * minute_tens;
+       torect.x = CLOCK_WIDTH * 0;
+       SDL_BlitSurface(numberBank, &fromrect, clockSprite->sprite, &torect);
+       fromrect.x = CLOCK_WIDTH * minute_units;
+       torect.x = CLOCK_WIDTH * 1;
+       SDL_BlitSurface(numberBank, &fromrect, clockSprite->sprite, &torect);
+       fromrect.x = CLOCK_WIDTH * second_tens;
+       torect.x = CLOCK_WIDTH * 3;
+       SDL_BlitSurface(numberBank, &fromrect, clockSprite->sprite, &torect);
+       fromrect.x = CLOCK_WIDTH * second_units;
+       torect.x = CLOCK_WIDTH * 4;
+       SDL_BlitSurface(numberBank, &fromrect, clockSprite->sprite, &torect);
+
+       // tick out the last 10 seconds
+       if (thisTime<=10 && thisTime>0){
+               Mix_PlayChannel(-1, getSound("clock-tick"), 0);
+       }
+}
+/***********************************************************/
+char* getRandomWord(){
+// spin the word file to a random location and then
+// loop until a 7 or 8 letter word is found
+
+FILE* wordlist;
+int filelocation;
+int i;
+char* wordFromList = malloc(sizeof(char) * 50);
+int len;
+int done = 0;
+
+       filelocation = rand()%10000;
+       wordlist=fopen("wordlist.txt","r");
+
+       for (i=0;i<=filelocation;i++){
+
+               if(fscanf(wordlist, "%s", wordFromList) != EOF){
+                       // spin on
+               }
+               else{
+                       // go back to the start of the file
+                       fclose(wordlist);
+                       fopen("wordlist.txt", "r");
+               }
+       }
+
+       // ok random location reached
+       while (!done){
+
+               len = strlen(wordFromList);
+               if ((len==7)){//||(len==6)||(len==5)){
+                       done = 1;
+               }
+               else{
+
+                       if(fscanf(wordlist, "%s", wordFromList) != EOF){
+                               // spin on
+                       }
+                       else{
+                               // go back to the start of the file
+                               fclose(wordlist);
+                               fopen("wordlist.txt", "r");
+                               fscanf(wordlist, "%s", wordFromList);
+                       }
+               }
+       }
+
+       
+       fclose(wordlist);
+
+       // add in our space character
+       wordFromList[len] = ' ';
+       wordFromList[len+1] = '\0';
+
+       return wordFromList;
+       free(wordFromList);
+}
+
+/***********************************************************/
+char* swapChars(int from, int to, char* string){
+// swap 2 characters in a string
+
+char swap;
+
+       swap = string[from];
+       string[from] = string[to];
+       string[to] = swap;
+
+       return string;
+
+}
+
+/***********************************************************/
+int revFirstNonSpace(char* thisWord){
+// working backwards in the string,
+// find the first non space character
+int i;
+
+       for (i = strlen(thisWord) ; i>0; i--){
+               if (thisWord[i-1] != SPACE_CHAR){
+                       return i;
+               }
+       }
+
+       return 0;
+}
+
+/***********************************************************/
+void shuffleWord(char** thisWord){
+// replace characters randomly
+
+int numSwaps;
+int from, to;
+int i;
+int len;
+
+       len = 7;
+
+       numSwaps = (rand()%len)+20;
+
+       for (i=0;i<numSwaps;i++){
+               from = rand()%len;
+               to = rand()%len;
+               strcpy(*thisWord, swapChars(from, to, *thisWord));
+       }
+
+       // move all the spaces to the end
+//     strcpy(buffer, *thisWord);
+//     for (i=0;i<strlen(buffer);i++){
+//             if(buffer[i] == SPACE_CHAR){
+//                     from = i;
+//                     to = revFirstNonSpace(buffer);
+//                     if (to == 0) break;     // no spaces
+//                     to--;
+//                     if (from < to){
+//                             letter = buffer[i+1];
+//                             buffer[i+1] = buffer[i];
+//                             buffer[i] = letter;
+//                     }
+//             }
+//     }
+//     strcpy(*thisWord, buffer);
+}
+
+/***********************************************************/
+int whereinstr(char* string, char letter){
+// returns the index of a specific letter in a string
+int i, len;
+
+       len=strlen(string);
+
+       for(i=0;i<len;i++){
+               if (string[i]==letter){
+                       return i;
+               }
+       }
+
+       return 0;
+}
+       
+/***********************************************************/
+void shuffleAvailableLetters(char** thisWord, struct sprite** letters){
+// same as shuffle word, but also tell the letter sprites where
+// to move to
+
+struct sprite *thisLetter = *letters;
+int from, to;
+char swap, posSwap;
+char* shuffleChars;
+char* shufflePos;
+int i=0;
+int numSwaps;
+
+       shuffleChars = malloc(sizeof(char) * 8);
+       shufflePos = malloc(sizeof(char) * 8);
+
+       for(i=0;i<7;i++){
+               shufflePos[i]=i+1;
+       }
+       shufflePos[7] = '\0';
+
+       strcpy(shuffleChars, *thisWord);
+
+
+       numSwaps = rand()%10+20;
+
+       for (i=0;i<numSwaps;i++){
+               from = rand()%7;
+               to = rand()%7;
+
+               swap = shuffleChars[from];
+               shuffleChars[from]=shuffleChars[to];
+               shuffleChars[to]=swap;
+
+               posSwap = shufflePos[from];
+               shufflePos[from]=shufflePos[to];
+               shufflePos[to] = posSwap;
+       }
+
+       while(thisLetter != NULL){
+               if (thisLetter->box == SHUFFLE){
+                       thisLetter->toX = (whereinstr(shufflePos, thisLetter->index+1) * (GAME_LETTER_WIDTH + GAME_LETTER_SPACE)) + BOX_START_X;
+                       thisLetter->index = whereinstr(shufflePos, thisLetter->index+1);
+               }
+
+               thisLetter = thisLetter->next;
+       }
+
+       strcpy(*thisWord, shuffleChars);
+
+       free(shuffleChars);
+       free(shufflePos);
+}
+/***********************************************************/
+/*void* updateClock(void *arg){
+
+int timeNow;
+       while((gameTime < AVAILABLE_TIME) && !stopTheClock){
+               timeNow = time(0) - gameStart;
+               if (timeNow!=gameTime){
+                       gameTime = timeNow;
+                       updateTimeDisplay = 1;          
+                       //sleep(1);
+               }
+       }
+       stopTheClock = 1;
+       solvePuzzle = 1;
+       return NULL;
+}
+*/
+/********************************************************************/
+void buildLetters(struct sprite** letters, SDL_Surface* screen){
+// build letter string into linked list of letter graphics
+
+struct sprite *thisLetter = NULL, *previousLetter = NULL;
+int i;
+int len;
+SDL_Rect rect, blankRect;
+Uint32 flags = SDL_SRCCOLORKEY;
+Uint8 bpp;
+Uint32 rmask, gmask, bmask, amask;
+int index = 0;
+
+
+       blankRect.x = 27 * GAME_LETTER_WIDTH;
+       blankRect.y = 0;
+       blankRect.w = GAME_LETTER_WIDTH;
+       blankRect.h = GAME_LETTER_HEIGHT;
+
+       rect.y = 0;
+       rect.w = GAME_LETTER_WIDTH;
+       rect.h = GAME_LETTER_HEIGHT;
+
+       len = strlen(shuffle);
+
+       if(screen->flags & SDL_SWSURFACE)
+                       flags |= SDL_SWSURFACE;
+       if(screen->flags & SDL_HWSURFACE)
+                       flags |= SDL_HWSURFACE;
+
+       bpp = screen->format->BitsPerPixel;
+       rmask = screen->format->Rmask;
+       gmask = screen->format->Gmask;
+       bmask = screen->format->Bmask;
+       amask = screen->format->Amask;
+
+       for (i=0;i<len;i++){
+
+               thisLetter=malloc(sizeof(struct sprite));
+
+               // determine which letter we're wanting and load it from the letterbank
+               if(shuffle[i] != ASCII_SPACE && shuffle[i] != SPACE_CHAR){
+                       rect.x = ((int)shuffle[i]-97) * GAME_LETTER_WIDTH;
+                       thisLetter->sprite = SDL_CreateRGBSurface(flags, GAME_LETTER_WIDTH, GAME_LETTER_HEIGHT, bpp, rmask, gmask, bmask, amask);
+                       thisLetter->replace = SDL_CreateRGBSurface(flags, GAME_LETTER_WIDTH, GAME_LETTER_HEIGHT, bpp, rmask, gmask, bmask, amask);
+
+                       SDL_BlitSurface(letterBank, &rect, thisLetter->sprite, NULL);
+                       SDL_BlitSurface(letterBank, &blankRect, thisLetter->replace, NULL);
+                       thisLetter->x = rand()%799;//i * (GAME_LETTER_WIDTH + GAME_LETTER_SPACE) + BOX_START_X;
+                       thisLetter->y = rand()%599;//SHUFFLE_BOX_Y;
+                       thisLetter->h = thisLetter->sprite->h;
+                       thisLetter->w = thisLetter->sprite->w;
+                       thisLetter->toX = i * (GAME_LETTER_WIDTH + GAME_LETTER_SPACE) + BOX_START_X;
+                       thisLetter->toY = SHUFFLE_BOX_Y;
+                       thisLetter->next = previousLetter;
+                       thisLetter->box = SHUFFLE;
+                       thisLetter->index = index++;
+
+                       previousLetter = thisLetter;
+
+                       *letters = thisLetter;
+
+                       thisLetter = NULL;
+               }
+               else{
+                       shuffle[i] = '£';
+               //      rect.x = 26 * GAME_LETTER_WIDTH;
+               }
+
+       }
+}
+
+/***********************************************************/
+void addClock(struct sprite** letters, SDL_Surface* screen){
+// add the clock to the sprites
+// keep a module reference to it for quick and easy update
+
+struct sprite *thisLetter = NULL, *previousLetter = NULL, *current = *letters;
+int i;
+SDL_Rect fromrect, torect, blankRect;
+Uint32 flags = SDL_SRCCOLORKEY;
+Uint8 bpp;
+Uint32 rmask, gmask, bmask, amask;
+int index = 0;
+
+       blankRect.x = CLOCK_WIDTH * 11;
+       blankRect.y = 0;
+       blankRect.w = CLOCK_WIDTH;
+       blankRect.h = CLOCK_HEIGHT;
+
+       fromrect.x = 0;
+       fromrect.y = 0;
+       fromrect.w = CLOCK_WIDTH;
+       fromrect.h = CLOCK_HEIGHT;
+
+       torect.y = 0;
+       torect.w = CLOCK_WIDTH;
+       torect.h = CLOCK_HEIGHT;
+       
+       if(screen->flags & SDL_SWSURFACE)
+                       flags |= SDL_SWSURFACE;
+       if(screen->flags & SDL_HWSURFACE)
+                       flags |= SDL_HWSURFACE;
+
+       bpp = screen->format->BitsPerPixel;
+       rmask = screen->format->Rmask;
+       gmask = screen->format->Gmask;
+       bmask = screen->format->Bmask;
+       amask = screen->format->Amask;
+
+       // add the clock onto the end - so we don't slow letter processing any
+       while (current != NULL){
+               previousLetter = current;
+               current =current->next;
+       }
+
+       thisLetter=malloc(sizeof(struct sprite));
+
+       thisLetter->sprite = SDL_CreateRGBSurface(flags, CLOCK_WIDTH*5, CLOCK_HEIGHT, bpp, rmask, gmask, bmask, amask);
+       thisLetter->replace = SDL_CreateRGBSurface(flags, CLOCK_WIDTH*5, CLOCK_HEIGHT, bpp, rmask, gmask, bmask, amask);
+
+       // initialise with 05:00
+       for (i=0;i<5;i++){
+
+//             printf("i:%i\n", CLOCK_WIDTH * i);
+               
+               torect.x = CLOCK_WIDTH * i;
+               switch(i){
+
+                       case 1:
+                               fromrect.x = 5 * CLOCK_WIDTH;
+                               break;
+                       case 2: 
+                               fromrect.x = CLOCK_WIDTH * 10; // the colon
+                               break;
+                       case 0:
+                       case 3:
+                       case 4:
+                               fromrect.x = 0;
+                               break;
+                       default:
+                               break;
+               }
+               //if(i!=2)
+               //      fromrect.x = 0;
+               //else
+               //      fromrect.x = CLOCK_WIDTH * 10; //the colon
+
+               SDL_BlitSurface(numberBank, &fromrect, thisLetter->sprite, &torect);
+
+               SDL_BlitSurface(numberBank, &blankRect, thisLetter->replace, &torect);
+       }
+
+       thisLetter->x = CLOCK_X;
+       thisLetter->y = CLOCK_Y;
+       thisLetter->h = thisLetter->sprite->h;
+       thisLetter->w = thisLetter->sprite->w;
+       thisLetter->toX = thisLetter->x;
+       thisLetter->toY = thisLetter->y;
+       thisLetter->next = NULL;
+       thisLetter->box = CONTROLS;
+       thisLetter->index = index++;
+
+       previousLetter->next = thisLetter;
+       clockSprite = thisLetter;
+}
+
+/***********************************************************/
+void addScore(struct sprite** letters, SDL_Surface* screen){
+// add the Score to the sprites
+// keep a module reference to it for quick and easy update
+
+struct sprite *thisLetter = NULL, *previousLetter = NULL, *current = *letters;
+SDL_Rect fromrect, torect, blankRect;
+Uint32 flags = SDL_SRCCOLORKEY;
+Uint8 bpp;
+Uint32 rmask, gmask, bmask, amask;
+int index = 0;
+int i;
+
+       blankRect.x = SCORE_WIDTH * 11;
+       blankRect.y = 0;
+       blankRect.w = SCORE_WIDTH;
+       blankRect.h = SCORE_HEIGHT;
+
+       fromrect.x = 0;
+       fromrect.y = 0;
+       fromrect.w = SCORE_WIDTH;
+       fromrect.h = SCORE_HEIGHT;
+
+       torect.y = 0;
+       torect.w = SCORE_WIDTH;
+       torect.h = SCORE_HEIGHT;
+       
+       if(screen->flags & SDL_SWSURFACE)
+                       flags |= SDL_SWSURFACE;
+       if(screen->flags & SDL_HWSURFACE)
+                       flags |= SDL_HWSURFACE;
+
+       bpp = screen->format->BitsPerPixel;
+       rmask = screen->format->Rmask;
+       gmask = screen->format->Gmask;
+       bmask = screen->format->Bmask;
+       amask = screen->format->Amask;
+
+       // add the score onto the end - so we don't slow letter processing any
+       while (current != NULL){
+               previousLetter = current;
+               current =current->next;
+       }
+
+       //previousLetter = clockSprite;
+       
+       thisLetter=malloc(sizeof(struct sprite));
+
+       thisLetter->sprite = SDL_CreateRGBSurface(flags, SCORE_WIDTH*5, SCORE_HEIGHT, bpp, rmask, gmask, bmask, amask);
+       thisLetter->replace = SDL_CreateRGBSurface(flags, SCORE_WIDTH*5, SCORE_HEIGHT, bpp, rmask, gmask, bmask, amask);
+
+       for (i=0;i<5;i++){
+               if (i==0)
+                       fromrect.x = 0;
+               else
+                       fromrect.x = SCORE_WIDTH*11;
+               torect.x = i * SCORE_WIDTH;
+               SDL_BlitSurface(numberBank, &fromrect, thisLetter->sprite, &torect);
+               SDL_BlitSurface(numberBank, &blankRect, thisLetter->replace, &torect);
+       }
+
+       thisLetter->x = SCORE_X;
+       thisLetter->y = SCORE_Y;
+       thisLetter->h = thisLetter->sprite->h;
+       thisLetter->w = thisLetter->sprite->w;
+       thisLetter->toX = thisLetter->x;
+       thisLetter->toY = thisLetter->y;
+       thisLetter->next = NULL;
+       thisLetter->box = CONTROLS;
+       thisLetter->index = index++;
+
+       previousLetter->next = thisLetter;
+       scoreSprite = thisLetter;
+}
+/***********************************************************/
+void newGame(struct node** head, struct dlb_node* dlbHead, SDL_Surface* screen, struct sprite** letters){
+
+char* guess;
+char* remain;
+//pthread_t clock;
+int happy = 0;   // we don't want any more than ones with 66 answers - that's all we can show...
+int i;
+
+       // show background
+       ShowBMP("images/background.bmp",screen, 0,0);
+
+       destroyLetters(&(*letters));
+
+       guess = malloc(sizeof(char)*50);
+       remain = malloc(sizeof(char)*50);
+
+       while (!happy){
+               strcpy(guess,"");
+               strcpy(rootWord, getRandomWord());
+               bigWordLen = strlen(rootWord)-1;
+               strcpy(remain,rootWord);
+
+               rootWord[bigWordLen] = '\0';
+
+               // destroy answers list
+               destroyAnswers(&(*head));
+
+               // generate anagrams from random word
+               ag(&(*head), dlbHead, &guess, &remain);
+
+               sort(&(*head));
+               answersSought = Length(*head);
+               happy = ((answersSought <= 77) && (answersSought >= 6));
+
+               if(!happy){
+                       printf("Too Many Answers!  word: %s, answers: %i\n", rootWord, answersSought);
+               }
+       }
+
+       for (i=bigWordLen;i<7;i++){
+               remain[i]='£';
+       }
+
+       remain[7] = '\0';
+
+//     printf("%s,%i\n", remain, bigWordLen);
+       remain[bigWordLen]='\0';
+
+       shuffleWord(&remain);
+       strcpy(shuffle, remain);
+
+//     printf("shuffle:%s\n", shuffle);
+       free(guess);
+       free(remain);
+
+       strcpy(answer, "£££££££");
+
+       //build up the letter sprites
+       buildLetters(&(*letters), screen);
+       addClock(&(*letters), screen);
+       addScore(&(*letters), screen);
+
+       // display all answer boxes
+       displayAnswerBoxes(*head, screen);
+
+       gotBigWord = 0;
+       score = 0;
+       updateTheScore = 1;
+       gamePaused = 0;
+       winGame = 0;
+       answersGot = 0;
+
+       gameStart = time(0);
+       gameTime = 0;
+       stopTheClock = 0;
+
+       // create the clock loop on a new thread
+       //pthread_create(&clock, NULL, updateClock, NULL);
+}
+/***********************************************************/
+void gameLoop(struct node** head, struct dlb_node* dlbHead, SDL_Surface* screen, struct sprite** letters){
+
+int done=0;
+SDL_Event event;
+int timeNow;
+
+       // main game loop
+       while (!done){
+
+               if(winGame){
+
+                       stopTheClock = 1;
+                       solvePuzzle = 1;
+               }
+
+               if((gameTime < AVAILABLE_TIME) && !stopTheClock){
+                       timeNow = time(0) - gameStart;
+                       if (timeNow!=gameTime){
+                               gameTime = timeNow;
+                               updateTime(screen);
+                       }
+               }
+               else{
+                       if (!stopTheClock){
+                               stopTheClock = 1;
+                               solvePuzzle = 1;
+                       }
+               }
+
+               // check messages
+               if(solvePuzzle){
+                       // walk the list, setting everything to found
+                       solveIt(*head);
+                       clearWord(&(*letters));
+                       strcpy(shuffle, "£££££££");
+                       strcpy(answer, rootWord);
+                       //displayLetters(screen);
+                       displayAnswerBoxes(*head, screen);
+                       gamePaused = 1;
+                       if (!stopTheClock){
+                               stopTheClock = 1;
+                       }
+
+                       solvePuzzle = 0;
+               }
+
+               if (updateAnswers){
+                       //move letters back down again
+                       clearWord(&(*letters));
+                       //displayLetters(screen);
+                       displayAnswerBoxes(*head, screen);
+
+                       updateAnswers = 0;
+               }
+
+               if(startNewGame){
+                       //move letters back down again
+                       if (!gotBigWord){
+                               totalScore = 0;
+                       }
+                       newGame(&(*head), dlbHead, screen, &(*letters));
+
+                       startNewGame = 0;
+               }
+
+               if(updateTheScore){
+                       updateScore(screen);
+
+                       updateTheScore = 0;
+               }
+
+               if (shuffleRemaining){
+                       // shuffle up the shuffle box
+                       char* shuffler;
+                       shuffler = malloc(sizeof(char)*8);
+                       strcpy(shuffler, shuffle);
+                       shuffleAvailableLetters(&shuffler, &(*letters));
+                       strcpy(shuffle, shuffler);
+                       free(shuffler);
+                       //clearLetters(screen);
+                       //displayLetters(screen);
+
+                       shuffleRemaining = 0;
+
+
+               }
+
+               if (clearGuess){
+                       // clear the guess;
+                       if (clearWord(&(*letters)) > 0)
+                               Mix_PlayChannel(-1, getSound("clear"),0);
+
+                       clearGuess = 0;
+               }
+
+               if (quitGame){
+                       done=1;
+               }
+
+               while (SDL_PollEvent(&event))
+               {
+                       switch (event.type) {
+                               case SDL_MOUSEBUTTONDOWN:
+//                     printf("shuffle: %s\n", shuffle);
+//                     printf("guess:   %s\n", answer);
+                                       clickDetect(event.button.button, event.button.x, event.button.y, screen, *head, &(*letters));
+                                       break;
+                               case SDL_QUIT:
+                                       done=1;
+                       }
+               }
+               moveSprites(&screen, &(*letters), letterSpeed);
+       }
+}
+
+/***********************************************************/
+int main(int argc, char *argv[]){
+
+struct node* head = NULL;
+struct dlb_node* dlbHead = NULL;
+SDL_Surface *screen;
+struct sprite* letters = NULL;
+//pthread_t audio;
+
+       // seed the random generator
+       srand(time(NULL));
+
+       if (SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0){
+               fprintf(stderr, "Unable to init SDL: %s\n", SDL_GetError());
+               exit(1);
+       }
+
+       atexit(SDL_Quit);
+
+       screen=SDL_SetVideoMode(800,600,16,SDL_HWSURFACE|SDL_DOUBLEBUF);//|SDL_FULLSCREEN);
+       if (screen == NULL)
+       {
+               printf("Unable to set 800x600 video: %s\n", SDL_GetError());
+               exit(1);
+       }
+
+       SDL_WM_SetCaption("Anagramarama", "ANAGRAMARAMA");
+
+       // buffer sounds
+       int audio_rate = MIX_DEFAULT_FREQUENCY;
+       Uint16 audio_format = AUDIO_S16;
+       int audio_channels = 1;
+       int audio_buffers = 256;
+
+       if(Mix_OpenAudio(audio_rate, audio_format, audio_channels, audio_buffers)){
+               printf("unable to open audio!\n");
+               exit(1);
+       }
+
+       bufferSounds(&soundCache);
+
+       // create the audio handler on a new thread
+       //pthread_create(&audio, NULL, handleSounds, NULL);
+
+       // create dictionary
+       createDLBTree(&dlbHead);
+
+       // cache in-game graphics
+       letterBank = SDL_LoadBMP("images/letterBank.bmp");
+       smallLetterBank = SDL_LoadBMP("images/smallLetterBank.bmp");
+       numberBank = SDL_LoadBMP("images/numberBank.bmp");
+
+       rootWord = malloc(sizeof(char)*9);
+       newGame(&head, dlbHead, screen, &letters);
+
+       gameLoop(&head, dlbHead, screen, &letters);
+
+       // tidy up and exit
+       free(rootWord);
+       Mix_CloseAudio();
+       clearSoundBuffer(&soundCache);
+       //trashDLBTree();
+       destroyLetters(&letters);
+       SDL_FreeSurface(screen);
+       SDL_FreeSurface(letterBank);
+       SDL_FreeSurface(smallLetterBank);
+       SDL_FreeSurface(numberBank);
+       //SDL_Quit(); - no need to call this directly - we do it with the atexit() command
+       return 0;
+}
diff --git a/src/ag.h b/src/ag.h
new file mode 100755 (executable)
index 0000000..71ef861
--- /dev/null
+++ b/src/ag.h
@@ -0,0 +1,93 @@
+/*
+Anagramarama - A word game.  Like anagrams?  You'll love anagramarama!
+Copyright (C) 2003  Colm Gallagher
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Contact Details: colm@coralquest.com
+                12 Weston Terrace, West Kilbride, KA23 9JX.  Scotland.
+*/
+
+// ASCII OFFSET to convert a number to it's character equivalent
+#define NUM_TO_CHAR 48
+
+// pixel locations of boxes
+#define SHUFFLEBOX 110
+#define ANSWERBOX 245
+#define BOX_START 30
+#define BOX_LENGTH 644
+
+#define LETTERSTARTPOS 80
+#define LETTERWIDTH 80
+#define LETTERHEIGHT 65
+#define LETTERSPACING 5
+
+// which box are we working with
+#define ANSWER 1
+#define SHUFFLE 2
+#define CONTROLS 3
+
+// enter button size and position
+#define ENTERBOXSTARTX 690
+#define ENTERBOXLENGTH 40
+#define ENTERBOXSTARTY 254
+#define ENTERBOXHEIGHT 35
+
+// clear button size and position
+#define CLEARBOXSTARTX 690
+#define CLEARBOXLENGTH 40
+#define CLEARBOXSTARTY 304
+#define CLEARBOXHEIGHT 40
+
+// shuffle button size and position
+#define SHUFFLEBOXSTARTX 618
+#define SHUFFLEBOXLENGTH 66
+#define SHUFFLEBOXSTARTY 206
+#define SHUFFLEBOXHEIGHT 16
+
+// solve button size and position
+#define SOLVEBOXSTARTX 612
+#define SOLVEBOXLENGTH 66
+#define SOLVEBOXSTARTY 0
+#define SOLVEBOXHEIGHT 30
+
+// new button size and position
+#define NEWBOXSTARTX 686
+#define NEWBOXLENGTH 46
+#define NEWBOXSTARTY 0
+#define NEWBOXHEIGHT 30
+
+// quit button size and position
+#define QUITBOXSTARTX 742
+#define QUITBOXLENGTH 58
+#define QUITBOXSTARTY 0
+#define QUITBOXHEIGHT 30
+
+// define the clock position and character width
+#define CLOCK_X 690
+#define CLOCK_Y 35
+#define CLOCK_WIDTH 18
+#define CLOCK_HEIGHT 32
+
+// define the clock position and character width
+#define SCORE_X 690
+#define SCORE_Y 67
+#define SCORE_WIDTH 18
+#define SCORE_HEIGHT 32
+
+#define SPACE_CHAR '£'
+#define ASCII_SPACE 32
+
+#define AVAILABLE_TIME 300
diff --git a/src/dlb.c b/src/dlb.c
new file mode 100755 (executable)
index 0000000..029aacf
--- /dev/null
+++ b/src/dlb.c
@@ -0,0 +1,154 @@
+/*
+Anagramarama - A word game.  Like anagrams?  You'll love anagramarama!
+Copyright (C) 2003  Colm Gallagher
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Contact Details: colm@coralquest.com
+                12 Weston Terrace, West Kilbride, KA23 9JX.  Scotland.
+*/
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include "dlb.h"
+
+/***************************************************************/
+struct dlb_node* dlb_insertLetter(char thisLetter){
+// create and return a new letter node
+struct dlb_node* newNode = malloc(sizeof(struct dlb_node));
+
+//     printf("dbl_insertLetter %c\n", thisLetter);
+
+       newNode->letter = thisLetter;
+       newNode->valid = 0;
+       newNode->sibling = NULL;
+       newNode->child = NULL;
+
+       return newNode;
+}
+
+/***************************************************************/
+void dlb_push(struct dlb_node** dlbHead, char* thisWord){
+// add a new word to the dictionary
+struct dlb_node* current = *dlbHead;
+struct dlb_node* previous = NULL;
+int i=0;
+char letter;
+int child = 0;
+int sibling = 0;
+int newHead = (*dlbHead==NULL);
+
+//     printf("dbl_push %s\n", thisWord);
+//     printf("head : %i\n", newHead);
+
+       while (i<=strlen(thisWord)-1){
+
+               letter = thisWord[i];
+
+               if (current == NULL){
+                       current = dlb_insertLetter(letter);
+                       if (newHead){
+                               *dlbHead = current;
+                               newHead = 0;
+                       }
+                       if (child){
+                               previous->child = current;
+                       }
+                       if (sibling){
+                               previous->sibling = current;
+                       }
+               }
+
+               child = 0;
+               sibling = 0;
+
+               previous = current;
+
+               if (letter == previous->letter){
+                       i++;
+                       child = 1;
+                       current = previous->child;
+               }
+               else{
+                       sibling = 1;
+                       current = previous->sibling;
+               }
+       }
+       previous->valid = 1;
+}
+
+/***************************************************************/
+void createDLBTree(struct dlb_node** dlbHead){
+// open the wordlist file and push all words onto the dictionary
+
+FILE* wordlist;
+char wordFromList[50];
+
+       //printf("createDLBTree\n");
+
+       // open wordlist file
+       wordlist = fopen("wordlist.txt", "r");
+
+       // get each word from the list
+       while (fscanf(wordlist, "%s", wordFromList) != EOF){
+               dlb_push(&(*dlbHead),wordFromList);
+       }
+
+       // close wordlist file
+       fclose(wordlist);
+}
+
+/***************************************************************/
+int dlb_lookup(struct dlb_node* dlbHead, char* thisWord){
+// determine if a given word is in the dictionary
+// essentially the same as a push, but doesn't add
+// any of the new letters
+
+struct dlb_node* current = dlbHead;
+struct dlb_node* previous = NULL;
+int i=0;
+char letter;
+int retval = 0;
+
+       //printf("dlb_lookup %s\n", thisWord);
+
+       while (i<=strlen(thisWord)-1){
+
+               if (current == NULL) {
+                       retval = 0;
+                       break;
+               }
+
+               //printf("%c",current->letter);
+
+               letter = thisWord[i];
+
+               previous = current;
+
+               if (letter == previous->letter){
+                       i++;
+                       current = previous->child;
+                       //printf(".%c., %i\n",previous->letter,previous->valid);
+                       retval = previous->valid;
+               }
+               else{
+                       current = previous->sibling;
+                       retval = 0;
+               }
+       }
+
+       return retval;
+}
diff --git a/src/dlb.h b/src/dlb.h
new file mode 100755 (executable)
index 0000000..8cebd20
--- /dev/null
+++ b/src/dlb.h
@@ -0,0 +1,36 @@
+/*
+Anagramarama - A word game.  Like anagrams?  You'll love anagramarama!
+Copyright (C) 2003  Colm Gallagher
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Contact Details: colm@coralquest.com
+                12 Weston Terrace, West Kilbride, KA23 9JX.  Scotland.
+*/
+
+#include <stdlib.h>
+
+struct dlb_node{
+
+       char letter;
+       int valid;
+       struct dlb_node* sibling;
+       struct dlb_node* child;
+};
+
+struct dlb_node* dlb_insertLetter(char thisLetter);
+void dlb_push(struct dlb_node** dlbHead, char* thisWord);
+void createDLBTree(struct dlb_node** dlbHead);
+int dlb_lookup(struct dlb_node* dlbHead, char* thisWord);
diff --git a/src/linked.c b/src/linked.c
new file mode 100755 (executable)
index 0000000..3bb0204
--- /dev/null
@@ -0,0 +1,167 @@
+/*
+Anagramarama - A word game.  Like anagrams?  You'll love anagramarama!
+Copyright (C) 2003  Colm Gallagher
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Contact Details: colm@coralquest.com
+                12 Weston Terrace, West Kilbride, KA23 9JX.  Scotland.
+*/
+
+#include <stdlib.h>
+#include <string.h>
+#include "linked.h"
+
+/***********************************************************/
+int Length(struct node* head){
+
+struct node* current = head;
+int count = 0;
+
+        while (current != NULL){
+                //printf("%s\n", current->anagram);
+                count++;
+                current = current->next;
+        }
+
+        return count;
+}
+
+/***********************************************************/
+void swap(struct node** from, struct node** to){
+// swaps the contents of 2 linked list nodes
+// doesn't disturb the pointers
+
+char* swap;
+
+       swap = malloc(sizeof((*from)->anagram));
+       strcpy(swap, (*from)->anagram);
+       (*from)->anagram = (*to)->anagram;
+       (*from)->length = (*to)->length;
+       (*to)->anagram = swap;
+       (*to)->length = strlen(swap);
+
+}
+
+/***********************************************************/
+void sort(struct node** headRef){
+// sort the linked list alpha/num of chars
+struct node* current = *headRef;
+struct node* next = malloc(sizeof(struct node));
+int done = 0;
+int swaps = 0;
+
+       // walk the list
+       while (!done){
+               while (current !=NULL){
+                       next = current->next;
+                       if (next != NULL){
+                               //printf("%s, %s - %i\n", next->anagram, current->anagram, strcmp(next->anagram, current->anagram));
+                               if (strcmp(next->anagram, current->anagram)<0){
+                                       swap(&next, &current);
+                                       swaps++;
+                               }
+                       }
+                       current = current->next;
+               }
+               if (!swaps){
+                       done = 1;
+               }
+               else{
+                       swaps = 0;
+                       current = *headRef;
+               }
+       }
+
+       done = 0;
+       current = *headRef;
+       swaps = 0;
+
+       // walk the list
+       while (!done){
+               while (current !=NULL){
+                       next = current->next;
+                       if (next != NULL){
+                               //printf("%s, %s \n", next->anagram, current->anagram);
+                               if (strlen(next->anagram) < strlen(current->anagram)){
+                                       swap(&next, &current);
+                                       swaps++;
+                               }
+                       }
+                       current = current->next;
+               }
+               if (!swaps){
+                       done = 1;
+               }
+               else{
+                       swaps = 0;
+                       current = *headRef;
+               }
+       }
+
+       free(next);
+}
+
+/***********************************************************/
+void destroyAnswers(struct node** headRef){
+// destroy the whole answers list
+
+struct node* current = *headRef;
+struct node* previous = *headRef;
+
+       while (current != NULL){
+               free(current->anagram);
+               previous = current;
+               current = current->next;
+               free(previous);
+               previous = NULL;
+       }
+
+       *headRef = NULL;
+}
+
+
+
+/***********************************************************/
+void push(struct node** headRef, char* anagram){
+
+struct node* newNode = malloc(sizeof(struct node));
+int len;
+struct node* current = *headRef;
+int duplicate = 0;
+
+       // walk the list first, so we can ignore duplicates...
+       // this is probably slower than clearing duplicates at the end 
+       // but simpler to write in the first instance
+       while (current != NULL){
+               if (!strcmp(anagram, current->anagram)){
+                       duplicate = 1;
+                       break;
+               }
+               current = current->next;
+       }
+
+       if (!duplicate){
+               len = strlen(anagram+1);
+               newNode->anagram = malloc(sizeof(char)*len);
+               strcpy(newNode->anagram, anagram);
+               newNode->length = len + 1;
+               newNode->found = 0;
+               newNode->guessed = 0;
+               newNode->next = *headRef;  // dereference back the the real head pointer
+
+               *headRef = newNode;        // ditto when replacing it with the new one
+       }
+}
diff --git a/src/linked.h b/src/linked.h
new file mode 100755 (executable)
index 0000000..4c6d772
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+Anagramarama - A word game.  Like anagrams?  You'll love anagramarama!
+Copyright (C) 2003  Colm Gallagher
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Contact Details: colm@coralquest.com
+                12 Weston Terrace, West Kilbride, KA23 9JX.  Scotland.
+*/
+
+struct node {
+       char*           anagram;
+       int             found;
+       int             guessed;
+       int             length;
+       struct node*    next;
+};
+
+int Length(struct node* head);
+void swap(struct node** from, struct node** to);
+void sort(struct node** headRef);
+void destroyAnswers(struct node** headRef);
+void push(struct node** headRef, char* anagram);
diff --git a/src/sound.c b/src/sound.c
new file mode 100755 (executable)
index 0000000..01d9bad
--- /dev/null
@@ -0,0 +1,289 @@
+/*
+Anagramarama - A word game.  Like anagrams?  You'll love anagramarama!
+Copyright (C) 2003  Colm Gallagher
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Contact Details: colm@coralquest.com
+                12 Weston Terrace, West Kilbride, KA23 9JX.  Scotland.
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <SDL/SDL.h>
+#include <pthread.h>
+
+struct sound{
+       char* name;
+       SDL_AudioSpec spec;
+       Uint8 *audio_chunk;
+       Uint32 audio_len;
+       Uint8 *audio_pos;
+       struct sound* next;
+};
+
+struct soundQueue{
+       char* name;
+       struct soundQueue* next;
+};
+
+//Uint32 audio_len;
+//Uint8 *audio_pos;
+
+//struct sound* soundCache = NULL;
+//struct soundQueue* sounds = NULL;
+
+/*******************************************************************************/
+//void fill_audio(void *udata, Uint8 *stream, int len){
+// The audio function callback takes the following parameters:
+//   stream:  A pointer to the audio buffer to be filled
+//   len:     The length (in bytes) of the audio buffer
+
+       /* Only play if we have data left */
+//     if ( audio_len == 0 )
+//             return;
+
+       /* Mix as much data as possible */
+//     len = ( len > audio_len ? audio_len : len );
+//     SDL_MixAudio(stream, audio_pos, len, SDL_MIX_MAXVOLUME);
+//     audio_pos += len;
+//     audio_len -= len;
+//}
+
+/*******************************************************************************/
+void pushSound(struct sound** soundCache, char* name, char* filename){
+
+struct sound* thisSound = NULL;
+
+       thisSound = malloc(sizeof(struct sound));
+       thisSound->name = malloc(sizeof(name)*strlen(name));
+       strcpy(thisSound->name, name);
+       /* Set the audio format */
+       thisSound->spec.freq = 22050;
+       thisSound->spec.format = AUDIO_S16;
+       thisSound->spec.channels = 2;    /* 1 = mono, 2 = stereo */
+       thisSound->spec.samples = 1024;  /* Good low-latency value for callback */
+       thisSound->spec.callback = NULL; // null for now - we'll set the local ref in the play routine
+       thisSound->spec.userdata = NULL;
+       thisSound->next = *soundCache;
+
+       if (!strcmp(name, "playArea")){
+               // create a big area to mix and play the audio in
+//             thisSound->audio_len = malloc(sizeof(Uint32));
+               thisSound->audio_len = 8152;
+               thisSound->audio_chunk = malloc(sizeof(Uint8)*thisSound->audio_len);
+       }
+       else{
+               // Attempt to load a sample
+               if (!SDL_LoadWAV(filename, &thisSound->spec, &thisSound->audio_chunk, &thisSound->audio_len)){
+                       SDL_CloseAudio();
+                       fprintf(stderr, "Error: %s", SDL_GetError());
+                       return;
+               }
+       }
+
+       *soundCache = thisSound;
+}
+
+/*******************************************************************************/
+void bufferSounds(struct sound** soundCache){
+
+       pushSound(&(*soundCache),"click", "audio/click.wav");
+       pushSound(&(*soundCache),"click2", "audio/click2.wav");
+       pushSound(&(*soundCache),"found", "audio/found.wav");
+       pushSound(&(*soundCache),"playArea", "");
+}
+
+/*******************************************************************************/
+void clearSoundBuffer(struct sound** soundCache){
+
+struct sound* currentSound = *soundCache, *previousSound = NULL;
+
+       printf("top\n");
+
+       while (currentSound!=NULL){
+
+               printf("in top\n");
+
+               SDL_FreeWAV(currentSound->audio_chunk);
+               free(currentSound->name);
+               previousSound = currentSound;
+               currentSound = currentSound->next;
+               free(previousSound);
+
+               printf("in botton\n");
+       }
+
+       printf("bottom\n");
+}
+
+/*******************************************************************************/
+//void playSound(struct sound* soundCache, char* name){
+
+//struct sound* currentSound = soundCache;
+
+//     while (currentSound!=NULL){
+//             if (!strcmp(currentSound->name, name)){
+//                     printf("current sound is : %s\n", currentSound->name);
+//                     audio_pos = currentSound->audio_chunk;
+//                     audio_len = currentSound->audio_len;
+                       /* Open the audio device, forcing the desired format */
+//                     currentSound->spec.callback = fill_audio;
+//                     if ( SDL_OpenAudio(&currentSound->spec, NULL) < 0 ) {
+//                             fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError());
+//                             return;
+//                     }
+
+                       // Unpause the audio
+//                             SDL_PauseAudio(0);
+
+                       /* Wait for sound to complete */
+//                     while ( audio_len > 0 ) {
+//                             SDL_Delay(100);         /* Sleep 1/10 second */
+//                     }
+
+//                     SDL_CloseAudio();
+//                     break;
+
+//             }
+//             currentSound = currentSound->next;
+//     }
+//}
+
+/*******************************************************************************/
+void pushSoundQueue(struct soundQueue** sounds, char* name){
+
+struct soundQueue* current = *sounds;
+struct soundQueue* previous = NULL;
+
+
+       // get the tail - won't ever be very many, so not too lossy
+       // and saves handling a tail pointer
+       while (current != NULL){
+               previous = current;
+               current = current->next;
+       }
+       
+       current = NULL;
+       // OK a bit nasty - i'm reusing current here, i only
+       // used it above for running through the list
+
+       current = malloc(sizeof(struct soundQueue));
+       current->name = malloc(sizeof(char)*strlen(name));
+       strcpy(current->name,name);
+       current->next = NULL;
+
+
+       // join up the queue
+       if (previous == NULL)
+               // first time only, the head is previous
+               *sounds = current;
+       else
+               previous->next = current;
+
+}
+
+/*******************************************************************************/
+void popSoundQueue(struct soundQueue** sounds, char* name){
+
+struct soundQueue* oldHead = *sounds;
+
+       *sounds = oldHead->next;
+
+       free(oldHead->name);
+       free(oldHead);
+}
+
+/*******************************************************************************/
+//int doneSounds = 0;
+//int audioThreadOpen = 0;
+//void* handleSounds(void *arg){
+
+//char* name;
+
+//     audioThreadOpen = 1;
+
+       // if we're currently playing a sound or have none to handle - just leave
+//     while(!doneSounds){
+
+//             if(SDL_GetAudioStatus() == SDL_AUDIO_STOPPED && sounds != NULL){
+                       // get next sound off the queue and then pop it
+//                     name = malloc(sizeof(char)*strlen(sounds->name));
+//                     strcpy(name, sounds->name);
+//                     popSoundQueue(&sounds, name);
+//                     printf("sound: %s\n", name);
+//                     playSound(soundCache, name);
+
+//                     free(name);
+//             }
+//     }
+//     audioThreadOpen = 0;
+//     return 0;
+//}
+
+/*******************************************************************************/
+/*int main(int argc, char** argv){
+
+SDL_Surface* screen = NULL;
+SDL_Event event;
+Uint8* key;
+
+pthread_t audio;
+
+       if (SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0){
+               fprintf(stderr, "Unable to init SDL: %s\n", SDL_GetError());
+               exit(1);
+       }
+
+       screen=SDL_SetVideoMode(640,480,8,0);
+
+       atexit(SDL_Quit);
+
+       soundCache=NULL;
+       soundCache = malloc(sizeof(struct sound));
+       bufferSounds(&soundCache);
+
+       //sounds = malloc(sizeof(struct soundQueue));
+       pushSoundQueue(&sounds, "click");
+       pushSoundQueue(&sounds, "click2");
+       pushSoundQueue(&sounds, "click");
+       pushSoundQueue(&sounds, "click2");
+       pushSoundQueue(&sounds, "click2");
+       pushSoundQueue(&sounds, "found");
+
+       // create the audio handler on a new thread
+       pthread_create(&audio, NULL, handleSounds, NULL);
+
+//     playSound(soundCache, "click");
+//     playSound(soundCache, "click2");
+//     playSound(soundCache, "found");
+
+       do{
+               key = SDL_GetKeyState(NULL);
+               if(SDL_PollEvent(&event))
+                               if(event.type == SDL_QUIT)
+                                       break;
+       }
+       while (!key[SDLK_ESCAPE]);
+
+       doneSounds=1;
+       while (audioThreadOpen){
+               SDL_Delay(500);
+       }
+       
+       clearSoundBuffer(&soundCache);
+       return 0;
+}*/
diff --git a/src/sound.h b/src/sound.h
new file mode 100755 (executable)
index 0000000..6c700f5
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+Anagramarama - A word game.  Like anagrams?  You'll love anagramarama!
+Copyright (C) 2003  Colm Gallagher
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Contact Details: colm@coralquest.com
+                12 Weston Terrace, West Kilbride, KA23 9JX.  Scotland.
+*/
+
+struct sound{
+       char* name;
+       SDL_AudioSpec spec;
+       Uint8 *audio_chunk;
+       Uint32 audio_len;
+       Uint8 *audio_pos;
+       struct sound* next;
+};
+
+struct soundQueue{
+       char* name;
+       struct soundQueue* next;
+};
+
+//void fill_audio(void *udata, Uint8 *stream, int len);
+void pushSound(struct sound** soundCache, char* name, char* filename);
+void bufferSounds(struct sound** soundCache);
+void clearSoundBuffer();
+void playSound(struct sound* soundCache, char* name);
+void pushSoundQueue(struct soundQueue** sounds, char* name);
+void popSoundQueue(struct soundQueue** sounds, char* name);
+void* handleSounds(void *arg);
diff --git a/src/sprite.c b/src/sprite.c
new file mode 100755 (executable)
index 0000000..051703a
--- /dev/null
@@ -0,0 +1,153 @@
+/*
+Anagramarama - A word game.  Like anagrams?  You'll love anagramarama!
+Copyright (C) 2003  Colm Gallagher
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Contact Details: colm@coralquest.com
+                12 Weston Terrace, West Kilbride, KA23 9JX.  Scotland.
+*/
+
+#include <stdlib.h>
+#include <string.h>
+#include <SDL/SDL.h>
+#include "sprite.h"
+
+/********************************************************************/
+void setBackground(SDL_Surface** screen, struct sprite** movie){
+
+SDL_Rect rect;
+
+       rect.x = (*movie)->x;
+       rect.y = (*movie)->y;
+       rect.w = (*movie)->w;
+       rect.h = (*movie)->h;
+
+       // copy the background into the replace buffer
+       SDL_BlitSurface(*screen, &rect, (*movie)->replace, NULL);
+}
+
+/********************************************************************/
+void showSprite(SDL_Surface** screen, struct sprite** movie){
+
+SDL_Rect rect;
+
+       rect.x = (*movie)->x;
+       rect.y = (*movie)->y;
+       rect.w = (*movie)->w;
+       rect.h = (*movie)->h;
+
+       // display the image in new location
+       SDL_SetColorKey((*movie)->sprite, SDL_SRCCOLORKEY, SDL_MapRGB((*movie)->sprite->format,255,0,255));
+       SDL_BlitSurface((*movie)->sprite, NULL, *screen, &rect);
+}
+
+/********************************************************************/
+void resetBackground(SDL_Surface** screen, struct sprite** movie){
+
+SDL_Rect rect;
+
+       rect.x = (*movie)->x;
+       rect.y = (*movie)->y;
+       rect.w = (*movie)->w;
+       rect.h = (*movie)->h;
+
+       // put the screen back the way it was
+       SDL_SetColorKey((*movie)->replace, SDL_SRCCOLORKEY, SDL_MapRGB((*movie)->replace->format,255,0,255));
+       SDL_BlitSurface((*movie)->replace, NULL, *screen, &rect);
+}
+
+/********************************************************************/
+void moveSprite(SDL_Surface** screen, struct sprite** movie, int letterSpeed){
+
+int i;
+int x, y;
+int Xsteps;
+
+       // move a sprite from it's curent location to the new location
+       if( (  (*movie)->y != (*movie)->toY )  ||  (   (*movie)->x != (*movie)->toX )   ){
+
+               x = (*movie)->toX - (*movie)->x;
+               y = (*movie)->toY - (*movie)->y;
+               if (y){
+                       if (x<0) x *= -1;
+                       if (y<0) y *= -1;
+                       Xsteps = (x / y) * letterSpeed;
+               }
+               else{
+                       Xsteps = letterSpeed;
+               }
+
+               for (i = 0; i<Xsteps; i++){
+                       if((*movie)->x < (*movie)->toX){
+                               (*movie)->x++;
+                       }
+                       if((*movie)->x > (*movie)->toX){
+                               (*movie)->x--;
+                       }
+               }
+
+               for (i=0;i<letterSpeed; i++){
+                       if((*movie)->y < (*movie)->toY){
+                               (*movie)->y++;
+                       }
+                       if((*movie)->y > (*movie)->toY){
+                               (*movie)->y--;
+                       }
+               }
+       }
+
+       setBackground(&(*screen), &(*movie));
+}
+
+/********************************************************************/
+void moveSprites(SDL_Surface** screen, struct sprite** letters, int letterSpeed){
+
+struct sprite* current;
+
+       current= *letters;
+       while(current!=NULL){
+               moveSprite(&(*screen), &current, letterSpeed);
+               current = current->next;
+       }
+       current = *letters;
+       while(current!=NULL){
+               showSprite(&(*screen), &current);
+               current=current->next;
+       }
+       SDL_Flip(*screen);
+       current = *letters;
+       while(current!=NULL){
+               resetBackground(&(*screen), &current);
+               current= current->next;
+       }
+}
+
+/********************************************************************/
+void destroyLetters(struct sprite** letters){
+struct sprite* current = *letters;
+struct sprite* previous = NULL;
+
+       while(current!=NULL){
+               SDL_FreeSurface(current->sprite);
+               SDL_FreeSurface(current->replace);
+               previous = current;
+               current = current->next;
+               free(previous);
+       }
+
+       (*letters)=NULL;
+
+}
diff --git a/src/sprite.h b/src/sprite.h
new file mode 100755 (executable)
index 0000000..e72d64d
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+Anagramarama - A word game.  Like anagrams?  You'll love anagramarama!
+Copyright (C) 2003  Colm Gallagher
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Contact Details: colm@coralquest.com
+                12 Weston Terrace, West Kilbride, KA23 9JX.  Scotland.
+*/
+
+#define LETTER_FAST 15
+#define LETTER_SLOW 1
+#define GAME_LETTER_HEIGHT 90
+#define GAME_LETTER_WIDTH  80
+#define GAME_LETTER_SPACE 2
+#define SHUFFLE_BOX_Y 107
+#define BOX_START_X 80
+#define ANSWER_BOX_Y 243
+
+struct sprite{
+       SDL_Surface* sprite;
+       SDL_Surface* replace;
+       int x,y,w,h;
+       int toX, toY;
+       struct sprite* next;
+       int index;
+       int box;
+};
+
+void setBackground(SDL_Surface** screen, struct sprite** movie);
+void showSprite(SDL_Surface** screen, struct sprite** movie);
+void resetBackground(SDL_Surface** screen, struct sprite** movie);
+void moveSprite(SDL_Surface** screen, struct sprite** movie, int letterSpeed);
+void moveSprites(SDL_Surface** screen, struct sprite** letters, int LetterSpeed);
+int nextBlankPosition(int box, int* index);
+//void clickDetect(int button, int x, int y, SDL_Surface *screen, struct sprite** letters);
+void destroyLetters(struct sprite** letters);
+//void buildLetters(struct sprite** letters, SDL_Surface* screen);
diff --git a/wordlist.txt b/wordlist.txt
new file mode 100755 (executable)
index 0000000..b8980f0
--- /dev/null
@@ -0,0 +1,17454 @@
+aback
+abaft
+abandon
+abase
+abased
+abaser
+abases
+abash
+abashed
+abashes
+abasing
+abate
+abated
+abater
+abates
+abating
+abbe
+abbey
+abbeys
+abbot
+abbots
+abdomen
+abduct
+abducts
+abed
+abet
+abets
+abetted
+abetter
+abettor
+abhor
+abhors
+abide
+abided
+abider
+abides
+abiding
+ability
+abject
+abjure
+abjured
+abjurer
+abjures
+ablate
+ablated
+ablates
+ablaze
+able
+abler
+ablest
+ably
+aboard
+abode
+abodes
+abolish
+abort
+aborted
+aborter
+aborts
+abound
+abounds
+about
+above
+abrade
+abraded
+abrader
+abrades
+abreast
+abridge
+abroad
+abrupt
+abscess
+abscond
+absence
+absent
+absents
+absolve
+absorb
+absorbs
+abstain
+absurd
+abuse
+abused
+abuser
+abusers
+abuses
+abusing
+abusive
+abut
+abuts
+abutted
+abutter
+abysmal
+abyss
+abysses
+acacia
+academy
+accede
+acceded
+accedes
+accent
+accents
+accept
+accepts
+access
+acclaim
+accord
+accords
+accost
+accosts
+account
+accrue
+accrued
+accrues
+accusal
+accuse
+accused
+accuser
+accuses
+ace
+aced
+acer
+aces
+acetate
+acetone
+ache
+ached
+aches
+achieve
+aching
+acid
+acidic
+acidity
+acidly
+acids
+acing
+acme
+acne
+acned
+acolyte
+acorn
+acorns
+acquire
+acquit
+acquits
+acre
+acreage
+acres
+acrid
+acridly
+acrobat
+acronym
+across
+acrylic
+act
+acted
+acting
+action
+actions
+active
+actor
+actors
+actress
+acts
+actual
+actuals
+actuate
+acuity
+acumen
+acute
+acutely
+acuter
+acutest
+acyclic
+ad
+adage
+adages
+adagio
+adagios
+adamant
+adapt
+adapted
+adapter
+adaptor
+adapts
+add
+added
+addenda
+adder
+adders
+addict
+addicts
+adding
+address
+adds
+adduce
+adduced
+adducer
+adduces
+adduct
+adducts
+adept
+adeptly
+adepts
+adhere
+adhered
+adherer
+adheres
+adieu
+adjoin
+adjoins
+adjourn
+adjudge
+adjunct
+adjure
+adjured
+adjures
+adjust
+adjusts
+admiral
+admire
+admired
+admirer
+admires
+admit
+admits
+admix
+admixed
+admixes
+ado
+adobe
+adopt
+adopted
+adopter
+adopts
+adore
+adored
+adorer
+adores
+adoring
+adorn
+adorned
+adorns
+adrenal
+adrift
+adroit
+ads
+adsorb
+adsorbs
+adulate
+adult
+adultly
+adults
+advance
+advent
+adverb
+adverbs
+adverse
+advice
+advise
+advised
+advisee
+adviser
+advises
+advisor
+aegis
+aerate
+aerated
+aerates
+aerator
+aerial
+aerials
+aerobic
+aerosol
+afar
+afars
+affable
+affair
+affairs
+affect
+affects
+affirm
+affirms
+affix
+affixed
+affixes
+afflict
+afford
+affords
+affront
+afghan
+afghans
+afield
+afire
+aflame
+afloat
+afoot
+afore
+afoul
+afraid
+afresh
+aft
+after
+afters
+again
+against
+agape
+agar
+agate
+agates
+age
+aged
+agedly
+ageless
+agency
+agenda
+agendas
+agent
+agents
+ager
+agers
+ages
+aghast
+agile
+agilely
+agility
+aging
+agitate
+agleam
+aglow
+ago
+agog
+agonies
+agony
+agree
+agreed
+agreer
+agreers
+agrees
+ague
+ah
+ahead
+aid
+aide
+aided
+aider
+aides
+aiding
+aids
+ail
+ailed
+aileron
+ailing
+ailment
+ails
+aim
+aimed
+aimer
+aimers
+aiming
+aimless
+aims
+air
+airbag
+airbags
+airdrop
+aired
+airer
+airers
+airflow
+airhead
+airier
+airiest
+airily
+airing
+airings
+airless
+airlift
+airline
+airlock
+airmail
+airman
+airmen
+airport
+airs
+airship
+airway
+airways
+airy
+aisle
+aisles
+ajar
+akimbo
+akin
+alarm
+alarmed
+alarms
+alas
+alba
+albeit
+album
+albumen
+albumin
+albums
+alchemy
+alcohol
+alcove
+alcoved
+alcoves
+alder
+ale
+alee
+alert
+alerted
+alerter
+alertly
+alerts
+alfalfa
+alga
+algae
+algebra
+alias
+aliased
+aliases
+alibi
+alibis
+alien
+aliens
+alight
+align
+aligned
+aligner
+aligns
+alike
+aliment
+alimony
+alive
+alkali
+alkalis
+alkyl
+all
+allay
+allayed
+allays
+allege
+alleged
+alleges
+allegro
+allele
+alleles
+allergy
+alley
+alleys
+allied
+allier
+allies
+allot
+alloted
+allots
+allow
+allowed
+allows
+alloy
+alloyed
+alloys
+allude
+alluded
+alludes
+allure
+allured
+allures
+ally
+allying
+alma
+almanac
+almond
+almonds
+almoner
+almost
+alms
+almsman
+alnico
+aloe
+aloes
+aloft
+aloha
+alone
+along
+aloof
+aloofly
+aloud
+alpha
+alpine
+alps
+already
+also
+altar
+altars
+alter
+altered
+alterer
+alters
+alto
+altos
+alum
+alumna
+alumnae
+alumni
+alumnus
+alundum
+alveoli
+always
+am
+amain
+amalgam
+amass
+amassed
+amasser
+amasses
+amateur
+amatory
+amaze
+amazed
+amazer
+amazers
+amazes
+amazing
+amazon
+amazons
+amber
+ambient
+amble
+ambled
+ambler
+ambles
+ambling
+ambush
+amen
+amend
+amended
+amender
+amends
+amenity
+amiable
+amid
+amide
+amidst
+amigo
+amino
+amiss
+amity
+ammo
+ammonia
+amnesty
+amoeba
+amoebas
+amok
+among
+amongst
+amoral
+amorous
+amount
+amounts
+amour
+amours
+amp
+ampere
+amperes
+ample
+ampler
+amplest
+amplify
+amply
+ampoule
+amps
+ams
+amulet
+amulets
+amuse
+amused
+amuser
+amusers
+amuses
+amusing
+amusive
+amyl
+an
+anagram
+anal
+analogy
+analyst
+anarchy
+anatomy
+anchor
+anchors
+anchovy
+ancient
+and
+anded
+anders
+anding
+ands
+anemone
+anew
+angel
+angelic
+angels
+anger
+angered
+angers
+angle
+angled
+angler
+anglers
+angles
+angling
+angrier
+angrily
+angry
+angst
+anguish
+angular
+aniline
+animal
+animals
+animate
+animism
+anion
+anionic
+anions
+anise
+ankle
+ankles
+annal
+annalen
+annals
+annex
+annexed
+annexes
+annoy
+annoyed
+annoyer
+annoys
+annual
+annuals
+annul
+annuls
+annum
+anode
+anodes
+anoint
+anoints
+anomaly
+anomic
+anomie
+anon
+another
+answer
+answers
+ant
+ante
+anted
+antenna
+anthem
+anthems
+anther
+anti
+antic
+antics
+antigen
+anting
+antique
+antler
+ants
+anus
+anvil
+anvils
+anxiety
+anxious
+any
+anybody
+anyhow
+anymore
+anyone
+anyones
+anyway
+anyways
+aorta
+apace
+apart
+apathy
+ape
+aped
+aper
+apes
+apex
+apexes
+aphasia
+aphasic
+aphid
+aphids
+aphonic
+apiary
+apical
+apiece
+aping
+apish
+apishly
+aplenty
+aplomb
+apogee
+apogees
+apology
+apostle
+apparel
+appeal
+appeals
+appear
+appears
+appease
+append
+appends
+applaud
+apple
+apples
+applied
+applier
+applies
+apply
+appoint
+apprise
+apprize
+approve
+apricot
+apron
+aprons
+apropos
+apse
+apses
+apsis
+apt
+aptly
+aptness
+aqua
+aquaria
+aquas
+aquatic
+aqueous
+aquifer
+arable
+arbiter
+arc
+arcade
+arcaded
+arcades
+arcane
+arced
+arch
+archaic
+arched
+archer
+archers
+archery
+arches
+arching
+archive
+archly
+arcing
+arclike
+arcs
+arctic
+ardent
+arduous
+are
+area
+areas
+arena
+arenas
+ares
+argon
+argot
+argue
+argued
+arguer
+arguers
+argues
+arguing
+arid
+aridity
+aright
+arise
+arisen
+ariser
+arises
+arising
+ark
+arm
+armed
+armer
+armers
+armful
+armfuls
+armhole
+armies
+arming
+armload
+armpit
+armpits
+arms
+army
+aroma
+aromas
+arose
+around
+arousal
+arouse
+aroused
+arouses
+arrack
+arraign
+arrange
+arrant
+array
+arrayed
+arrayer
+arrays
+arrears
+arrest
+arrests
+arrival
+arrive
+arrived
+arriver
+arrives
+arrow
+arrowed
+arrows
+arroyo
+arroyos
+arsenal
+arsenic
+arsine
+arsines
+arson
+art
+artery
+artful
+article
+artisan
+artist
+artists
+artless
+arts
+artwork
+as
+ascend
+ascends
+ascent
+ascetic
+ascot
+ascribe
+aseptic
+ash
+ashamed
+ashen
+asher
+ashes
+ashman
+ashore
+ashtray
+aside
+asides
+asinine
+ask
+askance
+asked
+asker
+askers
+askew
+asking
+asks
+asleep
+asocial
+asp
+aspect
+aspects
+aspen
+asper
+asphalt
+aspic
+aspire
+aspired
+aspirer
+aspires
+aspirin
+ass
+assail
+assails
+assault
+assay
+assayed
+assayer
+assen
+assent
+assents
+assert
+asserts
+asses
+assess
+asset
+assets
+assign
+assigns
+assist
+assists
+assort
+assorts
+assuage
+assume
+assumed
+assumer
+assumes
+assure
+assured
+assurer
+assures
+aster
+asters
+asthma
+astound
+astral
+astray
+astride
+astute
+asunder
+asylum
+asylums
+at
+ate
+atheism
+atheist
+athlete
+atlas
+atoll
+atolls
+atom
+atomic
+atomics
+atoms
+atonal
+atone
+atoned
+atones
+atoning
+atop
+atrophy
+attach
+attache
+attack
+attacks
+attain
+attains
+attempt
+attend
+attends
+attest
+attests
+attic
+attics
+attire
+attired
+attires
+attract
+attune
+attuned
+attunes
+auburn
+auction
+audible
+audibly
+audio
+audit
+audited
+auditor
+audits
+auger
+augers
+aught
+augment
+augur
+augurs
+august
+aunt
+auntly
+aunts
+aura
+aural
+aurally
+auras
+aureole
+aurora
+auspice
+austere
+author
+authors
+autism
+auto
+autopsy
+autos
+autumn
+autumns
+avail
+availed
+availer
+avails
+avant
+avarice
+avenge
+avenged
+avenger
+avenges
+avenue
+avenues
+aver
+average
+averred
+averrer
+avers
+averse
+avert
+averted
+averts
+avian
+aviary
+aviator
+avid
+avidity
+avidly
+avionic
+avocado
+avoid
+avoided
+avoider
+avoids
+avouch
+avow
+avowed
+avower
+avows
+await
+awaited
+awaits
+awake
+awaked
+awaken
+awakens
+awakes
+awaking
+award
+awarded
+awarder
+awards
+aware
+awash
+away
+awe
+awed
+awesome
+awful
+awfully
+awhile
+awhiles
+awing
+awkward
+awl
+awls
+awning
+awnings
+awoke
+awry
+ax
+axe
+axed
+axer
+axers
+axes
+axial
+axially
+axing
+axiom
+axioms
+axion
+axions
+axis
+axle
+axles
+axolotl
+axon
+axons
+aye
+ayer
+ayers
+ayes
+azalea
+azaleas
+azimuth
+azure
+babble
+babbled
+babbler
+babbles
+babe
+babes
+babied
+babies
+baby
+babying
+babyish
+babysit
+bacilli
+back
+backed
+backer
+backers
+backing
+backlog
+backs
+backup
+backups
+bacon
+baconer
+bad
+bade
+baden
+badge
+badged
+badger
+badgers
+badges
+badging
+badly
+badness
+bads
+baffle
+baffled
+baffler
+baffles
+bag
+bagel
+bagels
+baggage
+bagged
+bagger
+baggers
+baggier
+baggies
+bagging
+baggy
+bagpipe
+bags
+bah
+bail
+bailer
+bailiff
+bailing
+bailly
+bait
+baited
+baiter
+baiting
+baits
+bake
+baked
+baker
+bakers
+bakery
+bakes
+baking
+bakings
+baklava
+balance
+balcony
+bald
+balder
+balding
+baldly
+bale
+baled
+baleful
+baler
+balers
+bales
+baling
+balk
+balked
+balker
+balkier
+balking
+balks
+balky
+ball
+ballad
+ballads
+ballast
+balled
+baller
+ballers
+ballet
+ballets
+balling
+balloon
+ballot
+ballots
+balls
+balm
+balmier
+balms
+balmy
+balsa
+balsam
+balsams
+bamboo
+bamboos
+ban
+banal
+banally
+banana
+bananas
+band
+bandage
+banded
+bander
+bandied
+bandies
+banding
+bandit
+bandits
+bands
+bandy
+bane
+baneful
+bang
+banged
+banger
+banging
+bangle
+bangles
+bangs
+baning
+banish
+banjo
+banjos
+bank
+banked
+banker
+bankers
+banking
+banks
+banned
+banner
+banners
+banning
+banquet
+bans
+banshee
+bantam
+banter
+banters
+baptism
+baptist
+bar
+barb
+barbed
+barbell
+barber
+barbers
+barbs
+bard
+bards
+bare
+bared
+barely
+barer
+bares
+barest
+barfly
+bargain
+barge
+barged
+barges
+barging
+baring
+barium
+bark
+barked
+barker
+barkers
+barking
+barks
+barley
+barn
+barns
+baron
+barons
+barony
+baroque
+barrack
+barrage
+barred
+barrel
+barrels
+barren
+barrens
+barrier
+barring
+barrow
+barrows
+bars
+barter
+barters
+bas
+basal
+basally
+basalt
+base
+based
+basely
+baseman
+baser
+bases
+basest
+bash
+bashed
+basher
+bashes
+bashful
+bashing
+basic
+basics
+basil
+basin
+basined
+basing
+basins
+basis
+bask
+basked
+basket
+baskets
+basking
+bass
+basses
+basset
+basso
+bastard
+baste
+basted
+baster
+bastes
+basting
+bastion
+bat
+batch
+batched
+batcher
+batches
+bated
+bater
+bath
+bathe
+bathed
+bather
+bathers
+bathes
+bathing
+bathos
+baths
+bathtub
+bating
+baton
+batons
+bats
+batted
+batten
+battens
+batter
+batters
+battery
+batting
+battle
+battled
+battler
+battles
+bauble
+baubles
+baud
+bauds
+bauxite
+bawdier
+bawdy
+bawl
+bawled
+bawler
+bawling
+bawls
+bay
+bayed
+baying
+bayly
+bayonet
+bayou
+bayous
+bays
+bazaar
+bazaars
+be
+beach
+beached
+beaches
+beacon
+beacons
+bead
+beaded
+beading
+beadle
+beadles
+beads
+beady
+beagle
+beagles
+beak
+beaked
+beaker
+beakers
+beaks
+beam
+beamed
+beamer
+beamers
+beaming
+beams
+bean
+beanbag
+beaned
+beaner
+beaners
+beaning
+beans
+bear
+beard
+bearded
+beards
+bearer
+bearers
+bearing
+bearish
+bears
+beast
+beastly
+beasts
+beat
+beaten
+beater
+beaters
+beatify
+beating
+beatnik
+beats
+beau
+beaus
+beauty
+beaver
+beavers
+becalm
+becalms
+became
+because
+beck
+beckon
+beckons
+become
+becomes
+bed
+bedbug
+bedbugs
+bedded
+bedder
+bedders
+bedding
+bedevil
+bedfast
+bedlam
+bedpost
+bedrock
+bedroom
+beds
+bedside
+bedtime
+bee
+beech
+beechen
+beecher
+beef
+beefed
+beefer
+beefers
+beefier
+beefing
+beefs
+beefy
+beehive
+been
+beens
+beep
+beeped
+beeper
+beeping
+beeps
+beer
+beers
+bees
+beet
+beetle
+beetled
+beetles
+beets
+befall
+befalls
+befell
+befit
+befits
+befog
+befogs
+before
+befoul
+befouls
+beg
+began
+beget
+begets
+beggar
+beggars
+beggary
+begged
+begging
+begin
+begins
+begot
+begs
+beguile
+begun
+behalf
+behave
+behaved
+behaver
+behaves
+behead
+beheld
+behest
+behind
+behold
+beholds
+beige
+being
+beings
+belated
+belay
+belayed
+belays
+belch
+belched
+belches
+belfry
+belie
+belied
+belief
+beliefs
+belier
+belies
+believe
+bell
+bellboy
+belle
+belles
+bellhop
+bellied
+bellies
+bellman
+bellmen
+bellow
+bellows
+bells
+belly
+belong
+belongs
+beloved
+below
+belt
+belted
+belting
+belts
+bely
+belying
+bemoan
+bemoans
+bench
+benched
+bencher
+benches
+bend
+bended
+bender
+benders
+bending
+bends
+beneath
+benefit
+benign
+bent
+bents
+benzene
+bequest
+berate
+berated
+berates
+bereave
+bereft
+beret
+berets
+berried
+berries
+berry
+berth
+berthed
+berths
+beryl
+bes
+beseech
+beset
+besets
+beside
+besides
+besiege
+bespeak
+best
+bested
+bester
+bestial
+besting
+bestow
+bests
+bet
+beta
+betas
+beth
+betide
+betray
+betrays
+betroth
+bets
+better
+betters
+betting
+between
+betwixt
+bevel
+bevels
+bevies
+bevy
+bewail
+bewails
+beware
+bewitch
+beyond
+bias
+biased
+biases
+biasing
+bib
+bibbed
+bibbing
+bible
+bibles
+bibs
+biceps
+bicker
+bickers
+bicycle
+bid
+bidden
+bidder
+bidders
+biddies
+bidding
+biddy
+bide
+bided
+bider
+bides
+biding
+bids
+bier
+bifocal
+big
+bigger
+biggest
+bight
+bights
+bigly
+bigness
+bigot
+bigoted
+bigotry
+bigots
+bike
+biked
+biker
+bikers
+bikes
+biking
+bikini
+bikinis
+bile
+bilge
+bilged
+bilges
+bilging
+bilk
+bilked
+bilker
+bilking
+bilks
+bill
+billed
+biller
+billers
+billet
+billets
+billing
+billion
+billow
+billows
+bills
+bimodal
+bin
+binary
+bind
+binded
+binder
+binders
+binding
+binds
+bing
+binge
+bingen
+binges
+bingo
+bingos
+bins
+biology
+biopsy
+biped
+bipeds
+biplane
+bipolar
+birch
+birchen
+bircher
+birches
+bird
+birder
+birdie
+birdied
+birdies
+birds
+birth
+birthed
+births
+biscuit
+bisect
+bisects
+bishop
+bishops
+bismuth
+bison
+bisons
+bisque
+bisques
+bit
+bitblt
+bitblts
+bitch
+bitches
+bite
+biter
+biters
+bites
+biting
+bitmap
+bitmaps
+bits
+bitser
+bitten
+bitter
+bitters
+bitwise
+bivalve
+bivouac
+bizarre
+blab
+blabbed
+blabs
+black
+blacked
+blacken
+blacker
+blackly
+blacks
+bladder
+blade
+bladed
+blades
+blame
+blamed
+blamer
+blamers
+blames
+blaming
+blanch
+bland
+blandly
+blank
+blanked
+blanker
+blanket
+blankly
+blanks
+blare
+blared
+blares
+blaring
+blase
+blast
+blasted
+blaster
+blasts
+blatant
+blaze
+blazed
+blazer
+blazers
+blazes
+blazing
+bleach
+bleak
+bleakly
+blear
+bleary
+bleat
+bleater
+bleats
+bled
+bleed
+bleeder
+bleeds
+blemish
+blend
+blended
+blender
+blends
+bless
+blessed
+blesses
+blew
+blight
+blimp
+blimps
+blind
+blinded
+blinder
+blindly
+blinds
+blink
+blinked
+blinker
+blinks
+blip
+blips
+bliss
+blister
+blithe
+blither
+blitz
+blitzes
+bloat
+bloated
+bloater
+bloats
+blob
+blobs
+bloc
+block
+blocked
+blocker
+blocks
+blocs
+bloke
+blokes
+blond
+blonde
+blondes
+blonds
+blood
+blooded
+bloods
+bloody
+bloom
+bloomed
+bloomer
+blooms
+blossom
+blot
+blots
+blotted
+blouse
+blouses
+blow
+blowed
+blower
+blowers
+blowing
+blown
+blows
+blowup
+blubber
+blue
+blued
+bluely
+bluer
+blues
+bluest
+bluff
+bluffed
+bluffer
+bluffly
+bluffs
+bluing
+bluish
+blunder
+blunt
+blunted
+blunter
+bluntly
+blunts
+blur
+blurb
+blurred
+blurry
+blurs
+blurt
+blurted
+blurter
+blurts
+blush
+blushed
+blusher
+blushes
+bluster
+boar
+board
+boarded
+boarder
+boards
+boast
+boasted
+boaster
+boasts
+boat
+boated
+boater
+boaters
+boating
+boatman
+boatmen
+boats
+bob
+bobbed
+bobbies
+bobbin
+bobbing
+bobbins
+bobby
+bobs
+bode
+boded
+bodes
+bodice
+bodied
+bodies
+bodily
+boding
+body
+bodying
+bog
+bogged
+boggle
+boggled
+boggles
+bogs
+bogus
+boil
+boiled
+boiler
+boilers
+boiling
+boils
+bold
+bolder
+boldest
+boldly
+boll
+bolster
+bolt
+bolted
+bolter
+bolting
+bolts
+bomb
+bombard
+bombast
+bombed
+bomber
+bombers
+bombing
+bombs
+bonanza
+bond
+bondage
+bonded
+bonder
+bonders
+bonding
+bonds
+bone
+boned
+boner
+boners
+bones
+bonfire
+bong
+bonier
+boning
+bonnet
+bonnets
+bonnier
+bonny
+bonus
+bonuses
+bony
+boo
+boob
+boobies
+booboo
+booby
+book
+booked
+booker
+bookers
+bookie
+bookies
+booking
+bookish
+booklet
+books
+boolean
+boom
+boomed
+boomer
+booming
+booms
+boon
+boor
+boorish
+boors
+boos
+boost
+boosted
+booster
+boosts
+boot
+booted
+booth
+booths
+booties
+booting
+bootleg
+boots
+booty
+booze
+boozer
+boozing
+borate
+borated
+borates
+borax
+border
+borders
+bore
+bored
+boredom
+borer
+borers
+bores
+boric
+boring
+born
+borne
+boron
+borough
+borrow
+borrows
+bosom
+bosoms
+boss
+bossed
+bosses
+bosun
+botany
+botch
+botched
+botcher
+botches
+both
+bother
+bothers
+bottle
+bottled
+bottler
+bottles
+bottom
+bottoms
+bough
+boughed
+boughs
+bought
+boulder
+bounce
+bounced
+bouncer
+bounces
+bouncy
+bound
+bounded
+bounden
+bounder
+bounds
+bounty
+bouquet
+bourbon
+bout
+bouts
+bovine
+bovines
+bow
+bowed
+bowel
+bowels
+bowen
+bower
+bowers
+bowing
+bowl
+bowled
+bowler
+bowlers
+bowline
+bowling
+bowls
+bowman
+bows
+bowser
+box
+boxcar
+boxcars
+boxed
+boxer
+boxers
+boxes
+boxing
+boxwood
+boy
+boycott
+boyer
+boyhood
+boyish
+boys
+bra
+brace
+braced
+bracer
+braces
+bracing
+bracket
+brae
+braes
+brag
+bragged
+bragger
+brags
+braid
+braided
+braider
+braids
+braille
+brain
+brained
+brains
+brainy
+brake
+braked
+brakes
+braking
+bramble
+brambly
+bran
+branch
+brand
+branded
+brander
+brands
+brandy
+bras
+brash
+brashly
+brass
+brassed
+brasses
+brassy
+brat
+brats
+bravado
+brave
+braved
+bravely
+braver
+bravery
+braves
+bravest
+braving
+bravo
+bravoed
+bravos
+bravura
+brawl
+brawled
+brawler
+brawls
+brawn
+bray
+brayed
+brayer
+braying
+brays
+braze
+brazed
+brazen
+brazer
+brazes
+brazier
+brazing
+breach
+bread
+breaded
+breads
+breadth
+break
+breaker
+breaks
+breakup
+breast
+breasts
+breath
+breathe
+breaths
+breathy
+bred
+breech
+breed
+breeder
+breeds
+breeze
+breezed
+breezes
+breezy
+breve
+breves
+brevet
+brevets
+brevity
+brew
+brewed
+brewer
+brewers
+brewery
+brewing
+brews
+briar
+briars
+bribe
+bribed
+briber
+bribers
+bribes
+bribing
+brick
+bricked
+bricker
+bricks
+bridal
+bride
+brides
+bridge
+bridged
+bridges
+bridle
+bridled
+bridles
+brief
+briefed
+briefer
+briefly
+briefs
+brier
+brig
+brigade
+bright
+brights
+brigs
+brim
+brimful
+brimmed
+brindle
+brine
+briner
+bring
+bringer
+brings
+brining
+brink
+brisk
+brisker
+briskly
+bristle
+brittle
+broach
+broad
+broaden
+broader
+broadly
+broads
+brocade
+broil
+broiled
+broiler
+broils
+broke
+broken
+broker
+brokers
+bromide
+bromine
+bronchi
+bronze
+bronzed
+bronzer
+bronzes
+brooch
+brood
+brooder
+broods
+brook
+brooked
+brooks
+broom
+broomed
+brooms
+broth
+brothel
+brother
+brought
+brow
+brown
+browned
+browner
+brownie
+brownly
+browns
+brows
+browse
+browsed
+browser
+browses
+bruise
+bruised
+bruiser
+bruises
+brunch
+brunt
+brush
+brushed
+brusher
+brushes
+brushy
+brusque
+brutal
+brute
+brutes
+brutish
+bubble
+bubbled
+bubbler
+bubbles
+bubbly
+buck
+bucked
+bucker
+bucket
+buckets
+bucking
+buckle
+buckled
+buckler
+buckles
+bucks
+bucolic
+bud
+budded
+buddies
+budding
+buddy
+budge
+budged
+budges
+budget
+budgets
+budging
+buds
+buff
+buffalo
+buffer
+buffers
+buffet
+buffets
+buffing
+buffoon
+buffs
+bug
+bugged
+bugger
+buggers
+buggies
+bugging
+buggy
+bugle
+bugled
+bugler
+bugles
+bugling
+bugs
+build
+builded
+builder
+builds
+buildup
+built
+bulb
+bulbed
+bulbs
+bulge
+bulged
+bulges
+bulging
+bulk
+bulked
+bulkier
+bulks
+bulky
+bull
+bulldog
+bulled
+bullet
+bullets
+bullied
+bullies
+bulling
+bullion
+bullish
+bulls
+bully
+bulwark
+bum
+bumble
+bumbled
+bumbler
+bumbles
+bummed
+bummer
+bummers
+bumming
+bump
+bumped
+bumper
+bumpers
+bumping
+bumps
+bums
+bun
+bunch
+bunched
+bunches
+bundle
+bundled
+bundler
+bundles
+bungle
+bungled
+bungler
+bungles
+bunion
+bunions
+bunk
+bunked
+bunker
+bunkers
+bunking
+bunks
+bunnies
+bunny
+buns
+bunt
+bunted
+bunter
+bunters
+bunting
+bunts
+buoy
+buoyant
+buoyed
+buoying
+buoys
+burden
+burdens
+bureau
+bureaus
+burgeon
+burger
+burgess
+burgher
+burglar
+burgle
+burgled
+burgles
+burial
+buried
+burier
+buries
+burl
+burled
+burler
+burlier
+burly
+burn
+burned
+burner
+burners
+burning
+burnish
+burns
+burnt
+burntly
+burp
+burped
+burping
+burps
+burr
+burred
+burrer
+burro
+burros
+burrow
+burrows
+burrs
+bursa
+bursas
+burst
+bursted
+burster
+bursts
+bury
+burying
+bus
+busboy
+busboys
+bused
+buses
+bush
+bushed
+bushel
+bushels
+bushes
+bushier
+bushing
+bushy
+busied
+busier
+busies
+busiest
+busily
+busing
+buss
+bussed
+busses
+bussing
+bust
+bustard
+busted
+buster
+busting
+bustle
+bustled
+busts
+busy
+busying
+but
+butane
+butcher
+butler
+butlers
+butt
+butte
+butted
+butter
+butters
+buttes
+butting
+buttock
+button
+buttons
+butts
+butyl
+buxom
+buxomly
+buy
+buyer
+buyers
+buying
+buys
+buzz
+buzzard
+buzzed
+buzzer
+buzzes
+buzzing
+buzzy
+by
+bye
+byers
+byes
+bygone
+bygones
+bylaw
+bylaws
+byline
+byliner
+bylines
+bypass
+byte
+bytes
+byway
+byways
+byword
+bywords
+cab
+cabbage
+caber
+cabin
+cabinet
+cabins
+cable
+cabled
+cables
+cabling
+cabs
+cache
+cached
+cacher
+caches
+caching
+cackle
+cackled
+cackler
+cackles
+cacti
+cactus
+cad
+cadence
+cafe
+cafes
+cage
+caged
+cager
+cagers
+cages
+caging
+cajole
+cajoled
+cajoler
+cajoles
+cake
+caked
+cakes
+caking
+calcium
+calf
+calfs
+calico
+caliph
+caliphs
+call
+called
+caller
+callers
+calling
+callous
+calls
+calm
+calmed
+calmer
+calmest
+calming
+calmly
+calms
+calorie
+calves
+came
+camel
+camels
+camera
+cameras
+camion
+camp
+camped
+camper
+campers
+camping
+camps
+campus
+can
+canal
+canals
+canary
+cancel
+cancels
+cancer
+cancers
+candid
+candied
+candies
+candle
+candled
+candler
+candles
+candy
+cane
+caned
+caner
+canes
+caning
+canker
+canned
+canner
+canners
+canning
+cannon
+cannons
+cannot
+canoe
+canoed
+canoes
+canon
+canons
+canopy
+cans
+canto
+canton
+cantons
+cantor
+cantors
+cantos
+canvas
+canvass
+canyon
+canyons
+cap
+capable
+capably
+cape
+caper
+capered
+capers
+capes
+capita
+capital
+capitol
+capped
+capping
+caps
+captain
+caption
+captive
+captor
+captors
+capture
+car
+caravan
+carbon
+carbons
+carcass
+card
+carded
+carder
+cardiac
+carding
+cards
+care
+cared
+career
+careers
+careful
+carer
+carers
+cares
+caress
+caret
+carets
+cargo
+cargoes
+cargos
+caribou
+caring
+carol
+carols
+carpet
+carpets
+carried
+carrier
+carries
+carrot
+carrots
+carry
+cars
+cart
+carted
+carter
+carters
+carting
+carton
+cartons
+cartoon
+carts
+carve
+carved
+carver
+carvers
+carves
+carving
+cascade
+case
+cased
+cases
+cash
+cashed
+casher
+cashers
+cashes
+cashier
+cashing
+casing
+casings
+cask
+casket
+caskets
+casks
+cast
+caste
+casted
+caster
+casters
+castes
+casteth
+casting
+castle
+castled
+castles
+casts
+casual
+casuals
+cat
+catch
+catcher
+catches
+cater
+catered
+caterer
+caters
+cathode
+cats
+catsup
+cattle
+caught
+causal
+cause
+caused
+causer
+causes
+causing
+caustic
+caution
+cavalry
+cave
+caveat
+caveats
+caved
+caver
+cavern
+caverns
+caves
+caving
+cavity
+caw
+cawed
+cawing
+caws
+cease
+ceased
+ceases
+ceasing
+cedar
+ceiling
+celery
+cell
+cellar
+cellars
+celled
+cellist
+cells
+cement
+cements
+censor
+censors
+censure
+census
+cent
+central
+cents
+century
+cereal
+cereals
+certain
+certify
+chafe
+chafer
+chaff
+chaffer
+chafing
+chagrin
+chain
+chained
+chains
+chair
+chaired
+chairs
+chalice
+chalk
+chalked
+chalks
+chamber
+chance
+chanced
+chances
+change
+changed
+changer
+changes
+channel
+chant
+chanted
+chanter
+chants
+chaos
+chaotic
+chap
+chapel
+chapels
+chaps
+chapter
+char
+charge
+charged
+charger
+charges
+charing
+chariot
+charity
+charm
+charmed
+charmer
+charms
+chars
+chart
+charted
+charter
+charts
+chase
+chased
+chaser
+chasers
+chases
+chasing
+chasm
+chasms
+chaste
+chaster
+chat
+chateau
+chats
+chatter
+cheap
+cheapen
+cheaper
+cheaply
+cheat
+cheated
+cheater
+cheats
+check
+checked
+checker
+checks
+cheek
+cheeks
+cheer
+cheered
+cheerer
+cheerly
+cheers
+cheery
+cheese
+cheesed
+cheeses
+chef
+chefs
+chemise
+chemist
+cherish
+cherry
+cherub
+cherubs
+chess
+chest
+chester
+chests
+chew
+chewed
+chewer
+chewers
+chewing
+chews
+chick
+chicken
+chicks
+chide
+chided
+chides
+chiding
+chief
+chiefly
+chiefs
+chiffon
+child
+childly
+chill
+chilled
+chiller
+chills
+chilly
+chime
+chimed
+chimer
+chimes
+chiming
+chimney
+chin
+chink
+chinked
+chinks
+chinned
+chinner
+chins
+chintz
+chip
+chips
+chirp
+chirped
+chirps
+chisel
+chisels
+chock
+chocked
+chocker
+chocks
+choice
+choicer
+choices
+choir
+choirs
+choke
+choked
+choker
+chokers
+chokes
+choking
+cholera
+choose
+chooser
+chooses
+chop
+chopped
+chopper
+chops
+choral
+chord
+chorded
+chords
+chore
+chores
+choring
+chorion
+chorus
+chose
+chosen
+chronic
+chubby
+chuck
+chucked
+chuckle
+chucks
+chum
+chump
+chumps
+chums
+chunk
+chunks
+church
+churn
+churned
+churner
+churns
+chute
+chuted
+chutes
+chuting
+cider
+ciders
+cigar
+cigars
+cinder
+cinders
+cipher
+ciphers
+circle
+circled
+circler
+circles
+circuit
+circus
+cistern
+citadel
+cite
+cited
+cites
+citied
+cities
+citing
+citizen
+city
+civic
+civics
+civil
+civilly
+clad
+clads
+claim
+claimed
+claimer
+claims
+clam
+clamber
+clamp
+clamped
+clamper
+clamps
+clams
+clan
+clang
+clanged
+clanger
+clangs
+clans
+clap
+claps
+clarify
+clarity
+clash
+clashed
+clasher
+clashes
+clasp
+clasped
+clasper
+clasps
+class
+classed
+classer
+classes
+classic
+clatter
+clause
+clauses
+claw
+clawed
+clawer
+clawing
+claws
+clay
+clayed
+claying
+clays
+clean
+cleaned
+cleaner
+cleanly
+cleans
+cleanse
+cleanup
+clear
+cleared
+clearer
+clearly
+clears
+cleave
+cleaved
+cleaver
+cleaves
+cleft
+clefts
+clench
+clergy
+clerk
+clerked
+clerkly
+clerks
+clever
+cliche
+cliches
+click
+clicked
+clicker
+clicks
+client
+clients
+cliff
+cliffs
+climate
+climax
+climb
+climbed
+climber
+climbs
+clime
+climes
+clinch
+cling
+clings
+clinic
+clinics
+clink
+clinked
+clinker
+clip
+clipped
+clipper
+clips
+clique
+cliques
+cloak
+cloaked
+cloaks
+clobber
+clock
+clocked
+clocker
+clocks
+clod
+clods
+clog
+clogged
+clogs
+clone
+cloned
+cloner
+cloners
+clones
+cloning
+close
+closed
+closely
+closer
+closers
+closes
+closest
+closet
+closets
+closing
+closure
+cloth
+clothe
+clothed
+clothes
+cloud
+clouded
+clouds
+cloudy
+clout
+clove
+clover
+cloves
+clown
+clowns
+club
+clubbed
+clubs
+cluck
+clucked
+clucks
+clue
+clues
+cluing
+clump
+clumped
+clumps
+clumsy
+clung
+cluster
+clutch
+clutter
+coach
+coached
+coacher
+coaches
+coal
+coaled
+coaler
+coaling
+coals
+coarse
+coarsen
+coarser
+coast
+coastal
+coasted
+coaster
+coasts
+coat
+coated
+coater
+coaters
+coating
+coats
+coax
+coaxed
+coaxer
+coaxes
+coaxial
+coaxing
+cobbler
+cobweb
+cobwebs
+cock
+cocked
+cocker
+cocking
+cocks
+cocoa
+coconut
+cocoon
+cocoons
+cod
+code
+coded
+coder
+coders
+codes
+codify
+coding
+codings
+cods
+coerce
+coerced
+coerces
+coexist
+coffee
+coffees
+coffer
+coffers
+coffin
+coffins
+cogent
+cohabit
+cohere
+cohered
+coherer
+coheres
+coil
+coiled
+coiling
+coils
+coin
+coinage
+coined
+coiner
+coining
+coins
+coke
+cokes
+coking
+cold
+colder
+coldest
+coldly
+colds
+collar
+collars
+collate
+collect
+college
+collide
+collie
+collied
+collier
+collies
+cologne
+colon
+colonel
+colons
+colony
+colt
+colter
+colts
+column
+columns
+comb
+combat
+combats
+combed
+comber
+combers
+combine
+combing
+combs
+come
+comedic
+comedy
+comely
+comer
+comers
+comes
+comest
+comet
+cometh
+comets
+comfort
+comic
+comical
+comics
+coming
+comings
+comma
+command
+commas
+commend
+comment
+commit
+commits
+common
+commons
+commune
+commute
+compact
+company
+compare
+compass
+compel
+compels
+compete
+compile
+complex
+comply
+compose
+compute
+comrade
+conceal
+concede
+conceit
+concept
+concern
+concert
+concise
+concord
+concur
+concurs
+condemn
+condone
+conduct
+conduit
+cone
+coned
+cones
+confer
+confers
+confess
+confide
+confine
+confirm
+conform
+confuse
+coning
+conjure
+connect
+connote
+conquer
+cons
+consent
+consign
+consist
+console
+consort
+consul
+consuls
+consult
+consume
+contact
+contain
+contend
+content
+contest
+context
+contour
+control
+convene
+convent
+convert
+convex
+convey
+conveys
+convict
+convoy
+convoys
+coo
+cooing
+cook
+cooked
+cooker
+cookers
+cookery
+cookie
+cookies
+cooking
+cooks
+cooky
+cool
+cooled
+cooler
+coolers
+coolest
+coolie
+coolies
+cooling
+coolly
+cools
+coon
+coons
+coop
+cooped
+cooper
+coopers
+coops
+cop
+cope
+coped
+coper
+copes
+copied
+copier
+copiers
+copies
+coping
+copings
+copious
+copper
+coppers
+cops
+copse
+copses
+copy
+copying
+coral
+cord
+corded
+corder
+cordial
+cording
+cords
+core
+cored
+corer
+corers
+cores
+coring
+cork
+corked
+corker
+corkers
+corking
+corks
+corn
+corned
+corner
+corners
+corning
+corns
+coronet
+corps
+corpse
+corpses
+corpus
+correct
+corrupt
+corset
+corsets
+cosine
+cosines
+cost
+costed
+costing
+costive
+costly
+costs
+costume
+cot
+cots
+cottage
+cotton
+cottons
+couch
+couched
+couches
+cough
+coughed
+cougher
+coughs
+could
+council
+counsel
+count
+counted
+counter
+country
+counts
+county
+couple
+coupled
+coupler
+couples
+coupon
+coupons
+courage
+courier
+course
+coursed
+courser
+courses
+court
+courted
+courter
+courtly
+courts
+cousin
+cousins
+cove
+cover
+covered
+coverer
+covers
+covert
+coves
+covet
+coveted
+coveter
+covets
+coving
+cow
+coward
+cowards
+cowboy
+cowboys
+cowed
+cowedly
+cower
+cowered
+cowerer
+cowers
+cowgirl
+cowing
+cowl
+cowled
+cowling
+cowls
+cows
+cowslip
+coyote
+coyotes
+cozier
+cozies
+cozy
+crab
+crabs
+crack
+cracked
+cracker
+crackle
+crackly
+cracks
+cradle
+cradled
+cradler
+cradles
+craft
+crafted
+crafter
+crafts
+crafty
+crag
+crags
+cram
+cramp
+cramped
+cramper
+cramps
+crams
+crane
+craned
+cranes
+craning
+crank
+cranked
+cranks
+cranky
+crap
+craping
+craps
+crash
+crashed
+crasher
+crashes
+crate
+crater
+craters
+crates
+crating
+cravat
+cravats
+crave
+craved
+craven
+craver
+craves
+craving
+crawl
+crawled
+crawler
+crawls
+craze
+crazed
+crazes
+crazier
+crazily
+crazing
+crazy
+creak
+creaked
+creaks
+cream
+creamed
+creamer
+creams
+creamy
+crease
+creased
+creaser
+creases
+create
+created
+creates
+creator
+credit
+credits
+creed
+creeds
+creek
+creeks
+creep
+creeper
+creeps
+cremate
+crepe
+crept
+crest
+crested
+crests
+cretin
+cretins
+crevice
+crew
+crewed
+crewing
+crews
+crib
+cribs
+cricket
+cried
+crier
+criers
+cries
+crime
+crimes
+crimson
+cringe
+cringed
+cringer
+cringes
+cripple
+crises
+crisis
+crisp
+crisper
+crisply
+crisps
+critic
+critics
+critter
+croak
+croaked
+croaker
+croaks
+crochet
+crook
+crooked
+crooks
+crop
+cropped
+cropper
+crops
+cross
+crossed
+crosser
+crosses
+crossly
+crouch
+crow
+crowd
+crowded
+crowder
+crowds
+crowed
+crowing
+crown
+crowned
+crowner
+crowns
+crows
+crucial
+crucify
+crude
+crudely
+cruder
+crudest
+cruel
+crueler
+cruelly
+cruelty
+cruise
+cruised
+cruiser
+cruises
+crumb
+crumble
+crumbly
+crumbs
+crumple
+crunch
+crunchy
+crusade
+crush
+crushed
+crusher
+crushes
+crust
+crusted
+crusts
+crutch
+crux
+cruxes
+cry
+crying
+cryptic
+crystal
+cub
+cube
+cubed
+cuber
+cubes
+cubic
+cubicly
+cubics
+cubing
+cubs
+cuckoo
+cuckoos
+cuddle
+cuddled
+cuddles
+cudgel
+cudgels
+cue
+cued
+cues
+cuff
+cuffed
+cuffing
+cuffs
+cuing
+cull
+culled
+culler
+culling
+culls
+culprit
+cult
+cults
+culture
+cunning
+cup
+cupful
+cupfuls
+cupped
+cupping
+cups
+cur
+curable
+curably
+curb
+curbed
+curbing
+curbs
+curds
+cure
+cured
+curer
+cures
+curfew
+curfews
+curing
+curious
+curl
+curled
+curler
+curlers
+curlier
+curling
+curls
+curly
+currant
+current
+curried
+currier
+curries
+curry
+curs
+curse
+cursed
+curses
+cursing
+cursive
+cursor
+cursors
+cursory
+curt
+curtail
+curtain
+curtly
+curtsy
+curve
+curved
+curves
+curving
+cushion
+cusp
+cusps
+cuss
+cussed
+cusser
+cusses
+custard
+custody
+custom
+customs
+cut
+cute
+cutely
+cuter
+cutes
+cutest
+cutoff
+cutoffs
+cuts
+cutter
+cutters
+cutting
+cycle
+cycled
+cycler
+cycles
+cyclic
+cycling
+cycloid
+cyclone
+cymbal
+cymbals
+cynical
+cypress
+cyst
+cysts
+czar
+dabble
+dabbled
+dabbler
+dabbles
+dad
+daddies
+daddy
+dads
+daemon
+daemons
+dagger
+daggers
+dailies
+daily
+dainty
+dairies
+dairy
+daisies
+daisy
+dale
+dales
+daleth
+dam
+damage
+damaged
+damager
+damages
+damask
+dame
+damed
+damn
+damned
+damning
+damns
+damp
+damped
+dampen
+dampens
+damper
+dampers
+damping
+damply
+damps
+dams
+damsel
+damsels
+dance
+danced
+dancer
+dancers
+dances
+dancing
+dandier
+dandies
+dandy
+danger
+dangers
+dangle
+dangled
+dangler
+dangles
+dare
+dared
+darer
+darers
+dares
+daring
+dark
+darken
+darker
+darkest
+darkly
+darks
+darling
+darn
+darned
+darner
+darning
+darns
+dart
+darted
+darter
+darting
+darts
+dash
+dashed
+dasher
+dashers
+dashes
+dashing
+data
+date
+dated
+datedly
+dater
+dates
+dating
+dative
+datum
+datums
+daunt
+daunted
+daunts
+dawn
+dawned
+dawning
+dawns
+day
+days
+daytime
+daze
+dazed
+dazes
+dazing
+dazzle
+dazzled
+dazzler
+dazzles
+deacon
+deacons
+dead
+deaden
+deadens
+deadly
+deaf
+deafen
+deafens
+deafer
+deafest
+deafly
+deal
+dealer
+dealers
+dealing
+deals
+dealt
+dean
+deans
+dear
+dearer
+dearest
+dearly
+dears
+dearth
+dearths
+death
+deathly
+deaths
+debate
+debated
+debater
+debates
+debris
+debt
+debtor
+debtors
+debts
+debug
+debugs
+decade
+decades
+decay
+decayed
+decayer
+decays
+decease
+deceit
+deceive
+decency
+decent
+decide
+decided
+decider
+decides
+decimal
+deck
+decked
+decker
+decking
+decks
+declare
+decline
+decode
+decoded
+decoder
+decodes
+decorum
+decoy
+decoys
+decree
+decreed
+decreer
+decrees
+deduce
+deduced
+deducer
+deduces
+deduct
+deducts
+deed
+deeded
+deeding
+deeds
+deem
+deemed
+deeming
+deems
+deep
+deepen
+deepens
+deeper
+deepest
+deeply
+deeps
+deer
+deers
+default
+defeat
+defeats
+defect
+defects
+defend
+defends
+defer
+defers
+defiant
+deficit
+defied
+defier
+defies
+defile
+defiled
+defiler
+defiles
+define
+defined
+definer
+defines
+deftly
+defy
+defying
+degrade
+degree
+degreed
+degrees
+deign
+deigned
+deigns
+deities
+deity
+delay
+delayed
+delayer
+delays
+delete
+deleted
+deleter
+deletes
+delight
+delimit
+deliver
+dell
+dells
+delta
+deltas
+delude
+deluded
+deluder
+deludes
+deluge
+deluged
+deluges
+delve
+delved
+delver
+delves
+delving
+demand
+demands
+demise
+demised
+demises
+demo
+demon
+demons
+demos
+demur
+demurs
+den
+denial
+denials
+denied
+denier
+denies
+denizen
+denote
+denoted
+denotes
+dens
+dense
+densely
+denser
+densest
+density
+dent
+dental
+dentals
+dented
+denting
+dentist
+dents
+deny
+denying
+depart
+departs
+depend
+depends
+depict
+depicts
+deplete
+deplore
+deploy
+deploys
+deport
+deports
+depose
+deposed
+deposes
+deposit
+depot
+depots
+deprave
+depress
+deprive
+depth
+depths
+deputy
+dequeue
+derail
+derails
+derbies
+derby
+deride
+derided
+derider
+derides
+derive
+derived
+deriver
+derives
+descend
+descent
+descry
+desert
+deserts
+deserve
+design
+designs
+desire
+desired
+desirer
+desires
+desk
+desks
+desktop
+despair
+despise
+despite
+despot
+despots
+dessert
+destine
+destiny
+destroy
+detach
+detail
+details
+detain
+detains
+detect
+detects
+detest
+detests
+detract
+develop
+deviant
+deviate
+device
+devices
+devil
+devils
+devise
+devised
+deviser
+devises
+devoid
+devote
+devoted
+devotee
+devotes
+devour
+devours
+devout
+dew
+dewdrop
+dewed
+dewier
+dewing
+dews
+dewy
+diadem
+diagram
+dial
+dialect
+dialog
+dialogs
+dials
+diamond
+diaper
+diapers
+diaries
+diary
+dice
+dicer
+dices
+dicing
+dickens
+dicky
+dictate
+diction
+dictum
+dictums
+did
+die
+died
+dies
+diet
+dieter
+dieters
+diets
+differ
+differs
+diffuse
+dig
+digest
+digests
+digger
+diggers
+digging
+digit
+digital
+digits
+dignify
+dignity
+digress
+digs
+dike
+diker
+dikes
+diking
+dilate
+dilated
+dilates
+dilemma
+dilute
+diluted
+diluter
+dilutes
+dim
+dime
+dimer
+dimers
+dimes
+dimly
+dimmed
+dimmer
+dimmers
+dimmest
+dimming
+dimness
+dimple
+dimpled
+dimples
+dims
+din
+dine
+dined
+diner
+diners
+dines
+dingier
+dingy
+dining
+dinner
+dinners
+dint
+diode
+diodes
+dioxide
+dip
+diploma
+dipped
+dipper
+dippers
+dipping
+dips
+dire
+direct
+directs
+direly
+direr
+direst
+dirge
+dirged
+dirges
+dirging
+dirt
+dirtied
+dirtier
+dirties
+dirtily
+dirts
+dirty
+disable
+disarm
+disarms
+disband
+disc
+discard
+discern
+discord
+discs
+discuss
+disdain
+disease
+disgust
+dish
+dished
+dishes
+dishing
+disk
+disked
+disking
+disks
+dislike
+dismal
+dismay
+dismays
+dismiss
+disobey
+disown
+disowns
+dispel
+dispels
+display
+dispose
+dispute
+disrupt
+dissent
+distal
+distant
+distill
+distort
+disturb
+ditch
+ditched
+ditcher
+ditches
+divan
+divans
+dive
+dived
+diver
+diverge
+divers
+diverse
+divert
+diverts
+dives
+divest
+divests
+divide
+divided
+divider
+divides
+divine
+divined
+diviner
+divines
+diving
+divisor
+divorce
+divulge
+dizzied
+dizzier
+dizzy
+do
+dock
+docked
+docker
+docking
+docks
+doctor
+doctors
+dodge
+dodged
+dodger
+dodgers
+dodges
+dodging
+doer
+doers
+does
+dog
+dogged
+dogging
+dogma
+dogmas
+dogs
+doing
+doings
+dole
+doled
+doleful
+doles
+doling
+doll
+dollar
+dollars
+dollied
+dollies
+dolls
+dolly
+dolphin
+domain
+domains
+dome
+domed
+domes
+doming
+don
+donate
+donated
+donates
+done
+donkey
+donkeys
+dons
+doom
+doomed
+dooming
+dooms
+door
+doors
+doorway
+dope
+doped
+doper
+dopers
+dopes
+doping
+dormant
+dorsal
+dose
+dosed
+doses
+dosing
+dot
+dote
+doted
+doter
+dotes
+doth
+doting
+dots
+dotted
+dotting
+double
+doubled
+doubler
+doubles
+doublet
+doubly
+doubt
+doubted
+doubter
+doubts
+dough
+douse
+doused
+douser
+douses
+dousing
+dove
+dover
+doves
+down
+downed
+downer
+downers
+downier
+downing
+downs
+downy
+doze
+dozed
+dozen
+dozens
+dozenth
+dozer
+dozes
+dozing
+drab
+drably
+drabs
+draft
+drafted
+drafter
+drafts
+drag
+dragged
+dragon
+dragons
+dragoon
+drags
+drain
+drained
+drainer
+drains
+drake
+drama
+dramas
+drank
+drape
+draped
+draper
+drapers
+drapery
+drapes
+draping
+drastic
+draw
+drawer
+drawers
+drawing
+drawl
+drawled
+drawler
+drawls
+drawly
+drawn
+drawnly
+draws
+dread
+dreaded
+dreads
+dream
+dreamed
+dreamer
+dreams
+dreamy
+dreary
+dredge
+dredged
+dredger
+dredges
+dregs
+drench
+dress
+dressed
+dresser
+dresses
+drew
+dried
+drier
+driers
+dries
+driest
+drift
+drifted
+drifter
+drifts
+drill
+drilled
+driller
+drills
+drily
+drink
+drinker
+drinks
+drip
+drips
+drive
+driven
+driver
+drivers
+drives
+driving
+drone
+droner
+drones
+droning
+drool
+drooled
+drooler
+drools
+droop
+drooped
+droops
+drop
+dropped
+dropper
+drops
+drought
+drove
+drover
+drovers
+droves
+drown
+drowned
+drowner
+drowns
+drowsy
+drug
+drugs
+drum
+drummed
+drummer
+drums
+drunk
+drunken
+drunker
+drunkly
+drunks
+dry
+drying
+dryly
+dual
+duality
+dually
+duals
+dub
+dubious
+dubs
+duchess
+duchies
+duchy
+duck
+ducked
+ducker
+ducking
+ducks
+dude
+due
+duel
+duels
+dueness
+dues
+dug
+duke
+dukes
+dull
+dulled
+duller
+dullest
+dulling
+dulls
+dully
+duly
+dumb
+dumber
+dumbest
+dumbly
+dummied
+dummies
+dummy
+dump
+dumped
+dumper
+dumpers
+dumping
+dumps
+dunce
+dunces
+dune
+dunes
+dungeon
+durable
+durably
+during
+dusk
+duskier
+dusky
+dust
+dusted
+duster
+dusters
+dustier
+dusting
+dusts
+dusty
+duties
+dutiful
+duty
+dwarf
+dwarfed
+dwarfs
+dwell
+dwelled
+dweller
+dwells
+dwindle
+dye
+dyed
+dyeing
+dyer
+dyers
+dyes
+dying
+dynamic
+dynasty
+each
+eager
+eagerly
+eagle
+eagles
+ear
+eared
+earing
+earl
+earlier
+earls
+early
+earmark
+earn
+earned
+earner
+earners
+earnest
+earning
+earns
+earring
+ears
+earshot
+earth
+earthed
+earthen
+earthly
+earths
+ease
+eased
+easer
+eases
+easier
+easiest
+easily
+easing
+east
+easter
+eastern
+easting
+easts
+easy
+eat
+eaten
+eater
+eaters
+eating
+eatings
+eats
+eaves
+ebb
+ebbed
+ebbing
+ebbs
+ebony
+echo
+echoed
+echoes
+echoing
+echos
+eclipse
+ecology
+economy
+ecstasy
+eddied
+eddies
+eddy
+eddying
+edge
+edged
+edger
+edges
+edging
+edible
+edibles
+edict
+edicts
+edifice
+edit
+edited
+editing
+edition
+editor
+editors
+edits
+educate
+eel
+eels
+eerie
+eerier
+effect
+effects
+effigy
+effort
+efforts
+egg
+egged
+egger
+egging
+eggs
+ego
+egos
+eight
+eighth
+eights
+eighty
+either
+eject
+ejected
+ejects
+eke
+eked
+ekes
+eking
+el
+elapse
+elapsed
+elapses
+elastic
+elate
+elated
+elater
+elates
+elating
+elation
+elbow
+elbowed
+elbows
+elder
+elderly
+elders
+eldest
+elect
+elected
+elector
+elects
+elegant
+element
+elevate
+eleven
+elevens
+elf
+elicit
+elicits
+elk
+elks
+ellipse
+elm
+elmer
+elms
+els
+else
+elude
+eluded
+eludes
+eluding
+elusive
+elves
+emacs
+email
+embark
+embarks
+embassy
+embed
+embeds
+ember
+embers
+emblem
+emblems
+embody
+embrace
+embryo
+embryos
+emerald
+emerge
+emerged
+emerges
+emeries
+emery
+eminent
+emit
+emits
+emitted
+emotion
+empathy
+emperor
+empire
+empires
+employ
+employs
+empower
+empress
+emptied
+emptier
+empties
+emptily
+empty
+emulate
+enable
+enabled
+enabler
+enables
+enact
+enacted
+enacts
+enamel
+enamels
+encamp
+encamps
+enchant
+enclose
+encode
+encoded
+encoder
+encodes
+encrypt
+end
+endear
+endears
+ended
+endemic
+ender
+enders
+ending
+endings
+endive
+endless
+endorse
+endow
+endowed
+endows
+ends
+endure
+endured
+endures
+enema
+enemas
+enemies
+enemy
+energy
+enforce
+engage
+engaged
+engages
+engine
+engined
+engines
+england
+engrave
+engross
+enhance
+enjoin
+enjoins
+enjoy
+enjoyed
+enjoys
+enlarge
+enlist
+enlists
+enliven
+enmity
+ennoble
+ennui
+enough
+enqueue
+enquire
+enrage
+enraged
+enrages
+enrich
+ensign
+ensigns
+enslave
+ensnare
+ensue
+ensued
+ensues
+ensuing
+ensure
+ensured
+ensurer
+ensures
+entail
+entails
+enter
+entered
+enterer
+enters
+entice
+enticed
+enticer
+entices
+entire
+entitle
+entity
+entreat
+entries
+entropy
+entrust
+entry
+envelop
+envied
+envier
+envies
+envious
+environ
+envoy
+envoys
+envy
+envying
+epaulet
+epic
+epics
+episode
+epistle
+epitaph
+epithet
+epoch
+epochs
+epsilon
+equal
+equally
+equals
+equate
+equated
+equates
+equator
+equip
+equips
+equity
+era
+eras
+erase
+erased
+eraser
+erasers
+erases
+erasing
+erasion
+erasure
+ere
+erect
+erected
+erectly
+erector
+erects
+ergo
+ermine
+ermined
+ermines
+err
+errand
+errands
+erratic
+erred
+erring
+error
+errors
+errs
+escape
+escaped
+escapee
+escaper
+escapes
+eschew
+eschews
+escort
+escorts
+espied
+espies
+espouse
+esprit
+esprits
+espy
+espying
+esquire
+essay
+essayed
+essayer
+essays
+essence
+estate
+estates
+esteem
+esteems
+etc
+eternal
+ethic
+ethical
+ethics
+ethnic
+eunuch
+eunuchs
+evade
+evaded
+evader
+evades
+evading
+eve
+even
+evened
+evener
+evening
+evenly
+evens
+event
+events
+ever
+everest
+every
+eves
+evict
+evicted
+evicts
+evident
+evil
+evilly
+evils
+evince
+evinced
+evinces
+evoke
+evoked
+evokes
+evoking
+evolute
+evolve
+evolved
+evolves
+ewe
+ewer
+ewes
+exact
+exacted
+exacter
+exactly
+exacts
+exalt
+exalted
+exalter
+exalts
+exam
+examen
+examine
+example
+exams
+exceed
+exceeds
+excel
+excels
+except
+excepts
+excerpt
+excess
+excise
+excised
+excises
+excite
+excited
+exciter
+excites
+exclaim
+exclude
+excrete
+excuse
+excused
+excuser
+excuses
+execute
+exempt
+exempts
+exert
+exerted
+exerts
+exhale
+exhaled
+exhales
+exhaust
+exhibit
+exile
+exiled
+exiles
+exiling
+exist
+existed
+exists
+exit
+exited
+exiting
+exits
+exotic
+expand
+expands
+expanse
+expect
+expects
+expel
+expels
+expend
+expends
+expense
+expert
+experts
+expire
+expired
+expires
+explain
+explode
+exploit
+explore
+export
+exports
+expose
+exposed
+exposer
+exposes
+expound
+express
+expunge
+extant
+extend
+extends
+extent
+extents
+extinct
+extol
+extols
+extra
+extract
+extras
+extreme
+exult
+exulted
+exults
+eye
+eyeball
+eyebrow
+eyed
+eyeing
+eyelid
+eyelids
+eyer
+eyers
+eyes
+eying
+fable
+fabled
+fabler
+fables
+fabling
+fabric
+fabrics
+facade
+facaded
+facades
+face
+faced
+facer
+faces
+facet
+faceted
+facets
+facial
+facile
+facing
+facings
+fact
+faction
+factor
+factors
+factory
+facts
+factual
+faculty
+fade
+faded
+fadedly
+fader
+faders
+fades
+fading
+fag
+fags
+fail
+failed
+failing
+fails
+failure
+fain
+faint
+fainted
+fainter
+faintly
+faints
+fair
+faired
+fairer
+fairest
+fairies
+fairing
+fairly
+fairs
+fairy
+faith
+faiths
+fake
+faked
+faker
+fakes
+faking
+falcon
+falcons
+fall
+fallacy
+fallen
+faller
+falling
+falls
+false
+falsely
+falser
+falsest
+falsify
+falsity
+falter
+falters
+fame
+famed
+fames
+family
+famine
+famines
+faming
+famish
+famous
+fan
+fanatic
+fancied
+fancier
+fancies
+fancily
+fancy
+fang
+fanged
+fangs
+fanned
+fanning
+fans
+fantasy
+far
+faraway
+farce
+farces
+farcing
+fare
+fared
+farer
+fares
+faring
+farm
+farmed
+farmer
+farmers
+farming
+farms
+farther
+fashion
+fast
+fasted
+fasten
+fastens
+faster
+fastest
+fasting
+fasts
+fat
+fatal
+fatally
+fatals
+fate
+fated
+fates
+father
+fathers
+fathom
+fathoms
+fatigue
+fating
+fatly
+fatness
+fats
+fatten
+fattens
+fatter
+fattest
+fault
+faulted
+faults
+faulty
+fawn
+fawned
+fawner
+fawning
+fawns
+fear
+feared
+fearer
+fearful
+fearing
+fears
+feast
+feasted
+feaster
+feasts
+feat
+feather
+feating
+featly
+feats
+feature
+fed
+federal
+feds
+fee
+feeble
+feebler
+feebly
+feed
+feeder
+feeders
+feeding
+feeds
+feel
+feeler
+feelers
+feeling
+feels
+fees
+feet
+feign
+feigned
+feigner
+feigns
+fell
+felled
+feller
+fellers
+felling
+fellow
+fellows
+fells
+felt
+felted
+felting
+felts
+female
+females
+femur
+femurs
+fen
+fence
+fenced
+fencer
+fencers
+fences
+fencing
+ferment
+fern
+ferns
+ferried
+ferries
+ferrite
+ferry
+fertile
+fervent
+festive
+fetch
+fetched
+fetcher
+fetches
+fetter
+fetters
+feud
+feudal
+feuds
+fever
+fevered
+fevers
+few
+fewer
+fewest
+fewness
+fews
+fibrous
+fickle
+fiction
+fiddle
+fiddled
+fiddler
+fiddles
+field
+fielded
+fielder
+fields
+fiend
+fiends
+fierce
+fiercer
+fiery
+fife
+fifteen
+fifth
+fifthly
+fifties
+fifty
+fig
+fight
+fighter
+fights
+figs
+figure
+figured
+figurer
+figures
+file
+filed
+filer
+filers
+files
+filial
+filing
+filings
+fill
+filled
+filler
+fillers
+filling
+fills
+film
+filmed
+filming
+films
+filter
+filters
+filth
+filthy
+fin
+final
+finally
+finals
+finance
+find
+finder
+finders
+finding
+finds
+fine
+fined
+finely
+finer
+fines
+finest
+finger
+fingers
+fining
+finish
+finite
+finites
+fins
+fir
+fire
+firearm
+fired
+firefly
+fireman
+firer
+firers
+fires
+firing
+firings
+firm
+firmed
+firmer
+firmest
+firming
+firmly
+firms
+first
+firstly
+firsts
+firth
+fiscal
+fiscals
+fish
+fished
+fisher
+fishers
+fishery
+fishes
+fishing
+fissure
+fist
+fisted
+fists
+fit
+fitful
+fitly
+fitness
+fits
+fitted
+fitter
+fitters
+fitting
+five
+fiver
+fives
+fix
+fixate
+fixated
+fixates
+fixed
+fixedly
+fixer
+fixers
+fixes
+fixing
+fixings
+fixture
+flab
+flabby
+flag
+flagged
+flags
+flake
+flaked
+flaker
+flakes
+flaking
+flame
+flamed
+flamer
+flamers
+flames
+flaming
+flank
+flanked
+flanker
+flanks
+flannel
+flap
+flaps
+flare
+flared
+flares
+flaring
+flash
+flashed
+flasher
+flashes
+flask
+flat
+flatly
+flats
+flatten
+flatter
+flaunt
+flaunts
+flaw
+flawed
+flawing
+flaws
+flax
+flaxen
+flea
+fleas
+fled
+fledged
+flee
+fleece
+fleeced
+fleeces
+fleecy
+fleeing
+fleer
+flees
+fleet
+fleetly
+fleets
+flesh
+fleshed
+flesher
+fleshes
+fleshly
+fleshy
+flew
+flews
+flick
+flicked
+flicker
+flicks
+flier
+fliers
+flies
+flight
+flights
+flinch
+fling
+flinger
+flings
+flint
+flints
+flip
+flips
+flirt
+flirted
+flirter
+flirts
+flit
+flits
+float
+floated
+floater
+floats
+flock
+flocked
+flocks
+flood
+flooded
+flooder
+floods
+floor
+floored
+floorer
+floors
+flop
+floppy
+flops
+flora
+florin
+floss
+flossed
+flosses
+flour
+floured
+flours
+flow
+flowed
+flower
+flowers
+flowery
+flowing
+flown
+flows
+fluent
+fluffy
+fluid
+fluidly
+fluids
+flung
+flunk
+flunked
+flunker
+flunks
+flurry
+flush
+flushed
+flushes
+flute
+fluted
+fluter
+flutes
+fluting
+flutter
+fly
+flyable
+flyer
+flyers
+flying
+foam
+foamed
+foamer
+foaming
+foams
+focal
+focally
+foci
+focus
+focused
+focuser
+focuses
+fodder
+foe
+foes
+fog
+fogged
+foggier
+foggily
+fogging
+foggy
+fogs
+foil
+foiled
+foiling
+foils
+fold
+folded
+folder
+folders
+folding
+folds
+foliage
+folk
+folks
+follies
+follow
+follows
+folly
+fond
+fonder
+fondest
+fondle
+fondled
+fondler
+fondles
+fondly
+fonds
+font
+fonts
+food
+foods
+fool
+fooled
+fooling
+foolish
+fools
+foot
+footed
+footer
+footers
+footing
+footman
+foots
+for
+forage
+foraged
+forager
+forages
+foray
+forayer
+forays
+forbade
+forbear
+forbid
+forbids
+force
+forced
+forcer
+forces
+forcing
+ford
+fords
+fore
+forearm
+forego
+foreign
+foreman
+foresee
+forest
+forests
+forever
+forfeit
+forgave
+forge
+forged
+forger
+forgers
+forgery
+forges
+forget
+forgets
+forging
+forgive
+forgot
+fork
+forked
+forker
+forking
+forks
+forlorn
+form
+formal
+formals
+formant
+format
+formats
+formed
+former
+formers
+forming
+forms
+formula
+forsake
+fort
+forte
+fortes
+forth
+fortier
+forties
+fortify
+forts
+fortune
+forty
+forum
+forums
+forward
+fossil
+fossils
+foster
+fosters
+fought
+foul
+fouled
+fouler
+foulest
+fouling
+foully
+fouls
+found
+founded
+founder
+foundry
+founds
+fount
+founts
+four
+fours
+fourth
+fowl
+fowler
+fowling
+fowls
+fox
+foxed
+foxes
+foxing
+fractal
+fragile
+frail
+frailer
+frailly
+frailty
+frame
+framed
+framer
+framers
+frames
+framing
+franc
+francs
+frank
+franked
+franker
+frankly
+franks
+frantic
+fraud
+frauds
+fraught
+fray
+frayed
+fraying
+frays
+freak
+freaks
+freckle
+free
+freed
+freedom
+freeing
+freely
+freeman
+freer
+frees
+freest
+freeway
+freeze
+freezer
+freezes
+freight
+frenzy
+fresh
+freshen
+fresher
+freshly
+fret
+fretful
+frets
+friar
+friarly
+friars
+fried
+friend
+friends
+frier
+fries
+frieze
+friezes
+frigate
+fright
+frill
+frilled
+frills
+fringe
+fringed
+fringes
+frisk
+frisked
+frisker
+frisks
+frock
+frocked
+frocks
+frog
+frogs
+frolic
+frolics
+from
+front
+fronted
+fronts
+frost
+frosted
+frosts
+frosty
+froth
+frown
+frowned
+frowner
+frowns
+froze
+frozen
+frugal
+fruit
+fruited
+fruiter
+fruits
+fry
+frying
+fuel
+fuels
+full
+fuller
+fullest
+fully
+fumble
+fumbled
+fumbler
+fumbles
+fume
+fumed
+fumes
+fuming
+fun
+functor
+fund
+funded
+funder
+funders
+funding
+funds
+funeral
+fungus
+funnel
+funnels
+funnier
+funnies
+funnily
+funny
+fur
+furies
+furious
+furnace
+furness
+furnish
+furrow
+furrows
+furs
+further
+furtive
+fury
+fuse
+fused
+fuses
+fusing
+fusion
+fusions
+fuss
+fusser
+fussing
+futile
+future
+futures
+fuzzier
+fuzzy
+gable
+gabled
+gabler
+gables
+gad
+gadget
+gadgets
+gag
+gaged
+gager
+gagged
+gagging
+gaging
+gags
+gaiety
+gaily
+gain
+gained
+gainer
+gainers
+gaining
+gainly
+gains
+gait
+gaited
+gaiter
+gaiters
+gaits
+galaxy
+gale
+gales
+gall
+gallant
+galled
+gallery
+galley
+galleys
+galling
+gallon
+gallons
+gallop
+gallops
+gallows
+galls
+gamble
+gambled
+gambler
+gambles
+game
+gamed
+gamely
+games
+gaming
+gamma
+gammas
+gang
+ganger
+gangly
+gangs
+gap
+gape
+gaped
+gaper
+gapes
+gaping
+gaps
+garage
+garaged
+garages
+garb
+garbage
+garbed
+garble
+garbled
+garbler
+garbles
+garden
+gardens
+gargle
+gargled
+gargles
+garland
+garlic
+garlics
+garment
+garner
+garners
+garnish
+garter
+garters
+gas
+gaseous
+gases
+gash
+gashed
+gashes
+gashing
+gasp
+gasped
+gasper
+gaspers
+gasping
+gasps
+gassed
+gasser
+gassers
+gassing
+gastric
+gate
+gated
+gates
+gateway
+gather
+gathers
+gating
+gaudier
+gaudies
+gaudy
+gauge
+gauged
+gauger
+gauges
+gauging
+gaunt
+gauntly
+gauze
+gauzed
+gauzes
+gauzing
+gave
+gay
+gayer
+gayest
+gayly
+gayness
+gaze
+gazed
+gazer
+gazers
+gazes
+gazing
+gear
+geared
+gearing
+gears
+geese
+gel
+gelatin
+gelled
+gelling
+gels
+gem
+gems
+gender
+genders
+gene
+general
+generic
+genes
+genetic
+genial
+genius
+genre
+genres
+genteel
+gentle
+gentled
+gentler
+gently
+gentry
+genuine
+genus
+germ
+germane
+germen
+germs
+gestalt
+gesture
+get
+gets
+getter
+getters
+getting
+ghastly
+ghost
+ghosted
+ghostly
+ghosts
+giant
+giants
+giddied
+giddier
+giddy
+gift
+gifted
+gifts
+gig
+giggle
+giggled
+giggler
+giggles
+gigs
+gild
+gilded
+gilder
+gilding
+gilds
+gill
+gilled
+giller
+gills
+gilt
+gimmick
+gin
+ginger
+gingham
+gins
+giraffe
+gird
+girded
+girder
+girders
+girding
+girdle
+girdled
+girdler
+girdles
+girds
+girl
+girls
+girt
+girth
+give
+given
+givens
+giver
+givers
+gives
+giveth
+giving
+gizmo
+gizmos
+glacial
+glacier
+glad
+gladder
+glade
+glades
+gladly
+glamour
+glance
+glanced
+glances
+gland
+glands
+glare
+glared
+glares
+glaring
+glass
+glassed
+glasses
+glassy
+glaze
+glazed
+glazer
+glazers
+glazes
+glazing
+gleam
+gleamed
+gleams
+glean
+gleaned
+gleaner
+gleans
+glee
+gleed
+gleeful
+glees
+glen
+glens
+glide
+glided
+glider
+gliders
+glides
+gliding
+glimmer
+glimpse
+glint
+glinted
+glints
+glisten
+glitch
+glitter
+global
+globals
+globe
+globes
+globing
+gloom
+glooms
+gloomy
+gloried
+glories
+glorify
+glory
+gloss
+glossed
+glosses
+glossy
+glottal
+glove
+gloved
+glover
+glovers
+gloves
+gloving
+glow
+glowed
+glower
+glowers
+glowing
+glows
+glucose
+glue
+glued
+gluer
+gluers
+glues
+gluing
+gnat
+gnats
+gnaw
+gnawed
+gnawer
+gnawing
+gnaws
+go
+goad
+goaded
+goading
+goads
+goal
+goals
+goat
+goatee
+goatees
+goats
+gobble
+gobbled
+gobbler
+gobbles
+goblet
+goblets
+goblin
+goblins
+god
+goddess
+godlier
+godlike
+godly
+gods
+goer
+goering
+goes
+going
+goings
+gold
+golden
+golding
+golds
+golf
+golfer
+golfers
+golfing
+golfs
+gone
+goner
+gong
+gongs
+gonion
+good
+goodbye
+goodie
+goodies
+goodly
+goods
+goody
+goose
+gooses
+goosing
+gore
+gored
+gores
+gorge
+gorger
+gorges
+gorging
+gorilla
+goring
+gosh
+gospel
+gospels
+gossip
+gossips
+got
+gotcha
+gotchas
+goth
+goto
+gotten
+gouge
+gouged
+gouger
+gouges
+gouging
+govern
+governs
+gown
+gowned
+gowns
+grab
+grabbed
+grabber
+grabs
+grace
+graced
+graces
+gracing
+grade
+graded
+gradely
+grader
+graders
+grades
+grading
+gradual
+graft
+grafted
+grafter
+grafts
+graham
+grahams
+grain
+grained
+grainer
+grains
+grammar
+granary
+grand
+grander
+grandly
+grandma
+grandpa
+grands
+grange
+granger
+granges
+granite
+granny
+grant
+granted
+granter
+grants
+grape
+grapes
+graph
+graphed
+graphic
+graphs
+grapple
+grasp
+grasped
+grasper
+grasps
+grass
+grassed
+grasses
+grassy
+grate
+grated
+grater
+grates
+gratify
+grating
+grave
+gravel
+gravels
+gravely
+graver
+gravers
+graves
+gravest
+gravies
+graving
+gravity
+gravy
+gray
+grayed
+grayer
+grayest
+graying
+grayly
+grays
+graze
+grazed
+grazer
+grazes
+grazing
+grease
+greased
+greaser
+greases
+greasy
+great
+greaten
+greater
+greatly
+greats
+greed
+greedy
+green
+greened
+greener
+greenly
+greens
+greet
+greeted
+greeter
+greets
+grenade
+grew
+grey
+greyest
+greying
+grid
+grids
+grief
+griefs
+grieve
+grieved
+griever
+grieves
+grill
+grilled
+griller
+grills
+grim
+grimed
+griming
+grimly
+grin
+grind
+grinder
+grinds
+grins
+grip
+gripe
+griped
+griper
+gripes
+griping
+gripped
+gripper
+grips
+grit
+grits
+grizzly
+groan
+groaned
+groaner
+groans
+grocer
+grocers
+grocery
+groom
+groomed
+groomer
+grooms
+groove
+grooved
+groover
+grooves
+grope
+groped
+groper
+gropes
+groping
+gross
+grossed
+grosser
+grosses
+grossly
+grotto
+grottos
+ground
+grounds
+group
+grouped
+grouper
+groups
+grouse
+groused
+grouser
+grouses
+grove
+grovel
+grovels
+grover
+grovers
+groves
+grow
+grower
+growers
+growing
+growl
+growled
+growler
+growls
+growly
+grown
+grownup
+grows
+growth
+growths
+grub
+grubs
+grudge
+grudged
+grudger
+grudges
+gruff
+gruffly
+grumble
+grunt
+grunted
+grunter
+grunts
+guard
+guarded
+guarder
+guards
+guess
+guessed
+guesser
+guesses
+guest
+guested
+guests
+guide
+guided
+guider
+guides
+guiding
+guild
+guilder
+guile
+guilt
+guilts
+guilty
+guinea
+guineas
+guise
+guised
+guises
+guising
+guitar
+guitars
+gulch
+gulches
+gulf
+gulfs
+gull
+gulled
+gullied
+gullies
+gulling
+gulls
+gully
+gulp
+gulped
+gulper
+gulps
+gum
+gums
+gun
+gunfire
+gunned
+gunner
+gunners
+gunning
+guns
+gurgle
+gurgled
+gurgles
+guru
+gurus
+gush
+gushed
+gusher
+gushes
+gushing
+gust
+gusts
+gut
+guts
+gutser
+gutter
+gutters
+guy
+guyed
+guyer
+guyers
+guying
+guys
+gym
+gymnast
+gyms
+gypsied
+gypsies
+gypsy
+ha
+habit
+habitat
+habits
+hack
+hacked
+hacker
+hackers
+hacking
+hacks
+had
+hag
+hagen
+haggard
+hail
+hailed
+hailer
+hailing
+hails
+hair
+haircut
+haired
+hairier
+hairs
+hairy
+hale
+haler
+half
+halfway
+haling
+hall
+haller
+hallow
+hallows
+halls
+hallway
+halt
+halted
+halter
+halters
+halting
+halts
+halve
+halved
+halvers
+halves
+halving
+ham
+hamlet
+hamlets
+hammer
+hammers
+hammock
+hamper
+hampers
+hams
+hand
+handbag
+handed
+hander
+handers
+handful
+handier
+handily
+handing
+handle
+handled
+handler
+handles
+hands
+handy
+hang
+hangar
+hangars
+hanged
+hanger
+hangers
+hanging
+hangs
+hap
+hapless
+haply
+happen
+happens
+happier
+happily
+happy
+harass
+hard
+harden
+hardens
+harder
+hardest
+hardier
+harding
+hardly
+hards
+hardy
+hare
+hares
+hark
+harked
+harken
+harking
+harks
+harlot
+harlots
+harm
+harmed
+harmer
+harmful
+harming
+harmony
+harms
+harness
+harp
+harped
+harper
+harpers
+harping
+harps
+harried
+harrier
+harrow
+harrows
+harry
+harsh
+harshen
+harsher
+harshly
+hart
+harvest
+has
+hash
+hashed
+hasher
+hashes
+hashing
+hassle
+hassled
+hassler
+hassles
+haste
+hasted
+hasten
+hastens
+hastes
+hastier
+hastily
+hasting
+hasty
+hat
+hatch
+hatched
+hatcher
+hatches
+hatchet
+hate
+hated
+hateful
+hater
+hates
+hath
+hating
+hatred
+hats
+haughty
+haul
+hauled
+hauler
+haulers
+hauling
+hauls
+haunch
+haunt
+haunted
+haunter
+haunts
+have
+haven
+havens
+haver
+havers
+haves
+having
+havoc
+havocs
+hawk
+hawked
+hawker
+hawkers
+hawking
+hawks
+hay
+hayer
+haying
+hays
+hazard
+hazards
+haze
+hazed
+hazel
+hazer
+hazes
+hazier
+haziest
+hazing
+hazy
+he
+head
+headed
+header
+headers
+heading
+heads
+headway
+heal
+healed
+healer
+healers
+healing
+heals
+health
+healthy
+heap
+heaped
+heaping
+heaps
+hear
+heard
+hearer
+hearers
+hearest
+hearing
+hearken
+hears
+hearsay
+hearses
+heart
+hearted
+hearten
+hearth
+hearts
+hearty
+heat
+heated
+heater
+heaters
+heath
+heathen
+heather
+heating
+heats
+heave
+heaved
+heaven
+heavens
+heaver
+heavers
+heaves
+heavier
+heavies
+heavily
+heaving
+heavy
+hedge
+hedged
+hedger
+hedges
+hedging
+heed
+heeded
+heeding
+heeds
+heel
+heeled
+heeler
+heelers
+heeling
+heels
+heifer
+height
+heights
+heinous
+heir
+heiress
+heirs
+held
+hell
+heller
+hello
+hellos
+hells
+helm
+helmet
+helmets
+help
+helped
+helper
+helpers
+helpful
+helping
+helps
+hem
+hemlock
+hemp
+hempen
+hems
+hen
+hence
+hens
+her
+herald
+heralds
+herb
+herbs
+herd
+herded
+herder
+herding
+herds
+here
+hereby
+herein
+heres
+heresy
+heretic
+hermit
+hermits
+hero
+heroes
+heroic
+heroics
+heroin
+heroine
+heroism
+heron
+herons
+heros
+herring
+hers
+herself
+hew
+hewed
+hewer
+hewing
+hews
+hex
+hexer
+hey
+hickory
+hid
+hidden
+hide
+hided
+hideous
+hideout
+hider
+hides
+hiding
+high
+higher
+highest
+highly
+highway
+hijack
+hijacks
+hike
+hiked
+hiker
+hikers
+hikes
+hiking
+hill
+hilled
+hiller
+hilling
+hillock
+hills
+hilltop
+hilt
+hilts
+him
+hims
+himself
+hind
+hinder
+hinders
+hinds
+hinge
+hinged
+hinger
+hinges
+hinging
+hint
+hinted
+hinter
+hinting
+hints
+hip
+hipness
+hips
+hire
+hired
+hirer
+hirers
+hires
+hiring
+hirings
+his
+hiss
+hissed
+hisser
+hisses
+hissing
+history
+hit
+hitch
+hitched
+hitcher
+hitches
+hither
+hits
+hitter
+hitters
+hitting
+hive
+hives
+hiving
+hoar
+hoard
+hoarded
+hoarder
+hoards
+hoarier
+hoarse
+hoarser
+hoary
+hoax
+hoaxed
+hoaxer
+hoaxes
+hoaxing
+hobbies
+hobble
+hobbled
+hobbler
+hobbles
+hobby
+hockey
+hoe
+hoer
+hoes
+hog
+hogs
+hoist
+hoisted
+hoister
+hoists
+hold
+holden
+holder
+holders
+holding
+holds
+hole
+holed
+holes
+holiday
+holier
+holies
+holing
+hollies
+hollow
+hollows
+holly
+holy
+homage
+homaged
+homager
+homages
+home
+homed
+homely
+homer
+homers
+homes
+homing
+hone
+honed
+honer
+hones
+honest
+honesty
+honey
+honeyed
+honeys
+honing
+hood
+hooded
+hooding
+hoods
+hoof
+hoofed
+hoofer
+hoofs
+hook
+hooked
+hooker
+hookers
+hooking
+hooks
+hoop
+hooped
+hooper
+hooping
+hoops
+hooray
+hoorays
+hoot
+hooted
+hooter
+hooters
+hooting
+hoots
+hop
+hope
+hoped
+hopeful
+hoper
+hopes
+hoping
+hopped
+hopper
+hoppers
+hopping
+hops
+horde
+hordes
+horizon
+hormone
+horn
+horned
+hornet
+hornets
+horns
+horrid
+horrify
+horror
+horrors
+horse
+horsely
+horses
+horsing
+hose
+hosed
+hoses
+hosing
+host
+hostage
+hosted
+hostess
+hostile
+hosting
+hostly
+hosts
+hot
+hotel
+hotels
+hotly
+hotness
+hotter
+hottest
+hound
+hounded
+hounder
+hounds
+hour
+hourly
+hours
+house
+housed
+houser
+houses
+housing
+hovel
+hovels
+hover
+hovered
+hoverer
+hovers
+how
+however
+howl
+howled
+howler
+howling
+howls
+hows
+hrs
+hub
+hubris
+hubs
+huddle
+huddled
+huddler
+huddles
+hue
+hued
+hues
+hug
+huge
+hugely
+huger
+hugest
+hugs
+huh
+hull
+hulled
+huller
+hulling
+hulls
+hum
+human
+humane
+humanly
+humans
+humble
+humbled
+humbler
+humbles
+humbly
+humid
+humidly
+hummed
+humming
+hump
+humped
+humping
+humps
+hums
+hunch
+hunched
+hunches
+hundred
+hung
+hunger
+hungers
+hungry
+hunk
+hunker
+hunkers
+hunks
+hunt
+hunted
+hunter
+hunters
+hunting
+hunts
+hurdle
+hurdled
+hurdler
+hurdles
+hurl
+hurled
+hurler
+hurlers
+hurling
+hurrah
+hurried
+hurrier
+hurries
+hurry
+hurt
+hurter
+hurting
+hurts
+husband
+hush
+hushed
+hushes
+hushing
+husk
+husked
+husker
+huskier
+huskies
+husking
+husks
+husky
+hustle
+hustled
+hustler
+hustles
+hut
+huts
+hybrid
+hybrids
+hygiene
+hymn
+hymning
+hymns
+hype
+hyped
+hyper
+hypes
+hyphen
+hyphens
+ice
+iceberg
+iced
+ices
+icier
+iciest
+iciness
+icing
+icings
+icon
+icons
+icy
+id
+idea
+ideal
+ideally
+ideals
+ideas
+idiocy
+idiot
+idiotic
+idiots
+idle
+idled
+idler
+idlers
+idles
+idlest
+idling
+idly
+idol
+idols
+if
+ignoble
+ignore
+ignored
+ignorer
+ignores
+ill
+illegal
+illicit
+illness
+ills
+illy
+image
+imaged
+images
+imagine
+imaging
+imitate
+immense
+immerse
+immoral
+immune
+imp
+impact
+impacts
+impair
+impairs
+impart
+imparts
+impasse
+impeach
+impede
+impeded
+impeder
+impedes
+impel
+impels
+imperil
+impetus
+impinge
+impious
+implant
+implied
+implies
+implore
+imply
+import
+imports
+impose
+imposed
+imposer
+imposes
+impress
+imprint
+improve
+imps
+impulse
+impure
+impute
+imputed
+imputes
+in
+inane
+inanely
+inaner
+inanest
+inapt
+inaptly
+inborn
+inbred
+inbuilt
+incense
+inch
+inched
+inches
+inching
+incite
+incited
+inciter
+incites
+incline
+inclose
+include
+income
+incomer
+incomes
+incur
+incurs
+indeed
+indent
+indents
+index
+indexed
+indexer
+indexes
+indices
+indigo
+indoor
+indoors
+induce
+induced
+inducer
+induces
+induct
+inducts
+indulge
+inert
+inertia
+inertly
+inexact
+infancy
+infant
+infants
+infect
+infects
+infer
+inferno
+infers
+infest
+infests
+infidel
+infix
+infixes
+inflame
+inflate
+inflict
+inflows
+inform
+informs
+infuse
+infused
+infuser
+infuses
+ingot
+ingrown
+inhabit
+inhale
+inhaled
+inhaler
+inhales
+inhere
+inhered
+inheres
+inherit
+inhibit
+inhuman
+inion
+initial
+inject
+injects
+injure
+injured
+injurer
+injures
+injury
+ink
+inked
+inker
+inkers
+inking
+inkings
+inkling
+inks
+inlaid
+inland
+inlet
+inlets
+inlier
+inly
+inlying
+inmate
+inmates
+inn
+innards
+innate
+inner
+innerly
+inning
+innings
+inns
+input
+inputed
+inputer
+inputs
+inquire
+inquiry
+inroad
+inroads
+ins
+insane
+insect
+insects
+insert
+inserts
+insets
+inside
+insider
+insides
+insight
+insist
+insists
+insofar
+inspect
+inspire
+install
+instant
+instead
+insteps
+insult
+insults
+insure
+insured
+insurer
+insures
+intact
+intakes
+integer
+intend
+intends
+intense
+intent
+intents
+interim
+intern
+interns
+into
+intoned
+intoner
+intrude
+intrust
+invade
+invaded
+invader
+invades
+invalid
+invent
+invents
+inverse
+invert
+inverts
+invest
+invests
+invite
+invited
+inviter
+invites
+invoice
+invoke
+invoked
+invoker
+invokes
+involve
+inward
+inwards
+ioctl
+iodine
+ion
+ions
+irate
+irately
+ire
+ires
+iris
+irises
+irk
+irked
+irking
+irks
+irksome
+iron
+ironed
+ironer
+ironies
+ironing
+irons
+irony
+is
+island
+islands
+isle
+isles
+islet
+islets
+isling
+isolate
+isotope
+ispell
+issue
+issued
+issuer
+issuers
+issues
+issuing
+isthmus
+it
+italic
+italics
+itch
+itches
+itching
+item
+items
+iterate
+its
+itself
+ivied
+ivies
+ivories
+ivory
+ivy
+ix
+jab
+jabbed
+jabbing
+jabs
+jack
+jacked
+jacker
+jacket
+jackets
+jacking
+jacks
+jade
+jaded
+jadedly
+jades
+jading
+jail
+jailed
+jailer
+jailers
+jailing
+jails
+jam
+jammed
+jamming
+jams
+janitor
+jar
+jargon
+jarred
+jarring
+jars
+jaunt
+jaunted
+jaunts
+jaunty
+javelin
+jaw
+jawed
+jaws
+jay
+jazz
+jealous
+jean
+jeans
+jeep
+jeeped
+jeepers
+jeeping
+jeeps
+jeer
+jeerer
+jeers
+jellied
+jellies
+jelly
+jenny
+jerk
+jerked
+jerker
+jerkier
+jerking
+jerks
+jerky
+jersey
+jerseys
+jest
+jested
+jester
+jesting
+jests
+jet
+jets
+jetted
+jetting
+jewel
+jewelry
+jewels
+jig
+jigs
+jingle
+jingled
+jingler
+jingles
+job
+jobs
+jocks
+jocund
+jog
+jogs
+john
+johns
+join
+joined
+joiner
+joiners
+joining
+joins
+joint
+jointed
+jointer
+jointly
+joints
+joke
+joked
+joker
+jokers
+jokes
+joking
+jollied
+jollier
+jollies
+jolly
+jolt
+jolted
+jolter
+jolting
+jolts
+jostle
+jostled
+jostles
+jot
+jots
+jotted
+jotting
+journal
+journey
+joust
+jousted
+jouster
+jousts
+joy
+joyful
+joyous
+joys
+jubilee
+judge
+judged
+judger
+judges
+judging
+jug
+juggle
+juggled
+juggler
+juggles
+jugs
+juice
+juiced
+juicer
+juicers
+juices
+juicier
+juicing
+juicy
+jumble
+jumbled
+jumbles
+jump
+jumped
+jumper
+jumpers
+jumpier
+jumping
+jumps
+jumpy
+jungle
+jungled
+jungles
+junior
+juniors
+juniper
+junk
+junker
+junkers
+junkie
+junkies
+junks
+junky
+juries
+juror
+jurors
+jury
+just
+juster
+justice
+justify
+justing
+justly
+jut
+kHz
+keel
+keeled
+keeler
+keeling
+keels
+keen
+keener
+keenest
+keening
+keenly
+keep
+keeper
+keepers
+keeping
+keeps
+ken
+kennel
+kennels
+kept
+kernel
+kernels
+ketchup
+kettle
+kettles
+key
+keyed
+keying
+keypad
+keypads
+keys
+keyword
+kick
+kicked
+kicker
+kickers
+kicking
+kicks
+kid
+kidded
+kidding
+kidnap
+kidnaps
+kidney
+kidneys
+kids
+kill
+killed
+killer
+killers
+killing
+kills
+kilobit
+kin
+kind
+kinder
+kindest
+kindle
+kindled
+kindler
+kindles
+kindly
+kindred
+kinds
+king
+kingdom
+kingly
+kings
+kinkier
+kinky
+kinship
+kinsman
+kiss
+kissed
+kisser
+kissers
+kisses
+kissing
+kit
+kitchen
+kite
+kited
+kiter
+kites
+kiting
+kits
+kitsch
+kitten
+kittens
+kitties
+kitty
+kludge
+kludged
+kludger
+kludges
+kludgey
+klutz
+klutzes
+klutzy
+knack
+knacker
+knacks
+knave
+knaves
+knead
+kneaded
+kneader
+kneads
+knee
+kneed
+kneeing
+kneel
+kneeled
+kneeler
+kneels
+knees
+knell
+knells
+knelt
+knew
+knife
+knifed
+knifes
+knifing
+knight
+knights
+knit
+knits
+knives
+knob
+knobs
+knock
+knocked
+knocker
+knocks
+knoll
+knolls
+knot
+knots
+knotted
+know
+knower
+knowhow
+knowing
+known
+knows
+knuckle
+kudos
+lab
+label
+labels
+labs
+lace
+laced
+lacer
+laces
+lacing
+lack
+lacked
+lacker
+lacking
+lacks
+lacquer
+lad
+ladder
+ladders
+laded
+laden
+ladened
+ladies
+lading
+lads
+lady
+lag
+lager
+lagers
+lagged
+lagoon
+lagoons
+lags
+laid
+lain
+lair
+lairs
+lake
+laker
+lakes
+laking
+lamb
+lambda
+lambdas
+lamber
+lambs
+lame
+lamed
+lamely
+lament
+laments
+lamer
+lames
+lamest
+laminar
+laming
+lamp
+lamper
+lamps
+lance
+lanced
+lancer
+lancers
+lances
+lancing
+land
+landed
+lander
+landers
+landing
+lands
+lane
+lanes
+languid
+lantern
+lap
+lapel
+lapels
+laps
+lapse
+lapsed
+lapser
+lapses
+lapsing
+lard
+larded
+larder
+larding
+lards
+large
+largely
+larger
+largest
+lark
+larker
+larks
+larva
+larvae
+larvas
+laser
+lasers
+lash
+lashed
+lasher
+lashes
+lashing
+lass
+lasses
+last
+lasted
+laster
+lasting
+lastly
+lasts
+latch
+latched
+latches
+late
+lated
+lately
+latency
+latent
+latents
+later
+lateral
+latest
+latex
+latexes
+lath
+lather
+lathes
+lathing
+latrine
+latter
+lattice
+laugh
+laughed
+laugher
+laughs
+launch
+launder
+laundry
+laurel
+laurels
+lava
+lavish
+law
+lawful
+lawless
+lawn
+lawns
+laws
+lawsuit
+lawyer
+lawyers
+lay
+layer
+layered
+layers
+laying
+layman
+laymen
+layoffs
+layout
+layouts
+lays
+lazed
+lazied
+lazier
+laziest
+lazily
+lazing
+lazy
+lazying
+lead
+leaded
+leaden
+leader
+leaders
+leading
+leads
+leaf
+leafed
+leafier
+leafing
+leaflet
+leafs
+leafy
+league
+leagued
+leaguer
+leagues
+leak
+leakage
+leaked
+leaker
+leaking
+leaks
+lean
+leaned
+leaner
+leanest
+leaning
+leanly
+leans
+leap
+leaped
+leaper
+leaping
+leaps
+leapt
+learn
+learned
+learner
+learns
+lease
+leased
+leases
+leash
+leashes
+leasing
+least
+leather
+leave
+leaved
+leaven
+leaver
+leavers
+leaves
+leaving
+lecture
+led
+ledge
+ledger
+ledgers
+ledges
+lee
+leech
+leeches
+leer
+leered
+leering
+leers
+lees
+left
+leftist
+lefts
+leg
+legacy
+legal
+legally
+legals
+legend
+legends
+legged
+legible
+legibly
+legion
+legions
+legs
+leisure
+lemma
+lemmas
+lemon
+lemons
+lend
+lender
+lenders
+lending
+lends
+length
+lengths
+lengthy
+lenient
+lens
+lensed
+lenser
+lensers
+lenses
+lensing
+lent
+lentil
+lentils
+leopard
+leprosy
+less
+lessen
+lessens
+lesser
+lesses
+lessing
+lesson
+lessons
+lest
+lester
+let
+lets
+letter
+letters
+letting
+lettuce
+levee
+leveed
+levees
+level
+levelly
+levels
+lever
+levered
+levers
+levied
+levier
+levies
+levy
+levying
+lewd
+lewdly
+lexical
+lexicon
+liable
+liaison
+liar
+liars
+liberal
+liberty
+libido
+library
+license
+lichen
+lichens
+lick
+licked
+licker
+licking
+licks
+lid
+lids
+lie
+lied
+lieder
+liege
+lien
+liens
+lier
+lies
+lieu
+life
+lifer
+lifers
+lift
+lifted
+lifter
+lifters
+lifting
+lifts
+light
+lighted
+lighten
+lighter
+lightly
+lights
+like
+liked
+likely
+liken
+likened
+likens
+liker
+likes
+likest
+liking
+likings
+lilac
+lilacs
+lilied
+lilies
+lily
+limb
+limbed
+limber
+limbers
+limbs
+lime
+limed
+limes
+liming
+limit
+limited
+limiter
+limits
+limp
+limped
+limper
+limping
+limply
+limps
+linden
+line
+linear
+lined
+linen
+linens
+liner
+liners
+lines
+linger
+lingers
+lining
+linings
+link
+linkage
+linked
+linker
+linkers
+linking
+links
+linseed
+lint
+linter
+lints
+lion
+lioness
+lions
+lip
+lips
+liquefy
+liquid
+liquids
+liquor
+liquors
+lisp
+lisped
+lisper
+lisping
+lisps
+list
+listed
+listen
+listens
+lister
+listers
+listing
+lists
+lit
+literal
+lithe
+lithely
+litter
+litters
+little
+littler
+livable
+livably
+live
+lived
+lively
+liven
+livened
+liver
+livers
+livery
+lives
+livest
+liveth
+living
+livings
+lizard
+lizards
+load
+loaded
+loader
+loaders
+loading
+loads
+loaf
+loafed
+loafer
+loafers
+loafing
+loafs
+loan
+loaned
+loaner
+loaning
+loans
+loath
+loathe
+loathed
+loather
+loathes
+loathly
+loaves
+lobbied
+lobbies
+lobby
+lobe
+lobed
+lobes
+lobster
+local
+locally
+locals
+locate
+located
+locater
+locates
+locator
+loci
+lock
+locked
+locker
+lockers
+locking
+lockout
+locks
+lockup
+lockups
+locus
+locust
+locusts
+lodge
+lodged
+lodger
+lodgers
+lodges
+lodging
+loft
+lofter
+loftier
+lofts
+lofty
+log
+logged
+logger
+loggers
+logging
+logic
+logical
+logics
+login
+logins
+logout
+logs
+loin
+loins
+loiter
+loiters
+lone
+lonely
+loner
+loners
+long
+longed
+longer
+longest
+longing
+longly
+longs
+look
+looked
+looker
+lookers
+looking
+lookout
+looks
+lookup
+lookups
+loom
+loomed
+looming
+looms
+loon
+loop
+looped
+looper
+looping
+loops
+loose
+loosed
+loosely
+loosen
+loosens
+looser
+looses
+loosest
+loosing
+loot
+looted
+looter
+looting
+loots
+lord
+lording
+lordly
+lords
+lore
+lorries
+lorry
+lose
+loser
+losers
+loses
+losing
+losings
+loss
+losses
+lossier
+lossy
+lost
+lot
+lots
+lottery
+lotus
+loud
+louden
+louder
+loudest
+loudly
+lounge
+lounged
+lounger
+lounges
+lousier
+lousy
+lovable
+lovably
+love
+loved
+lovely
+lover
+loverly
+lovers
+loves
+loving
+low
+lower
+lowered
+lowers
+lowest
+lowing
+lowland
+lowlier
+lowly
+lowness
+lows
+loyal
+loyally
+loyalty
+luck
+lucked
+luckier
+luckily
+lucks
+lucky
+luggage
+lull
+lullaby
+lulled
+lulls
+lumber
+lumbers
+lump
+lumped
+lumpen
+lumper
+lumping
+lumps
+lunar
+lunatic
+lunch
+lunched
+luncher
+lunches
+lung
+lunged
+lunger
+lunging
+lungs
+lurch
+lurched
+lurcher
+lurches
+lure
+lured
+lurer
+lures
+luring
+lurk
+lurked
+lurker
+lurkers
+lurking
+lurks
+lust
+lustier
+lustily
+lusting
+lusts
+lusty
+lute
+luted
+lutes
+luting
+luxury
+lying
+lyingly
+lyings
+lymph
+lynch
+lynched
+lyncher
+lynches
+lynx
+lynxes
+lyre
+lyres
+lyric
+lyrics
+mace
+maced
+macer
+maces
+machine
+macing
+macro
+macros
+mad
+madam
+madams
+madden
+madder
+maddest
+made
+madly
+madman
+madness
+madras
+maggot
+maggots
+magic
+magical
+magnet
+magnets
+magnify
+maid
+maiden
+maidens
+maids
+mail
+mailbox
+mailed
+mailer
+mailers
+mailing
+mails
+maim
+maimed
+maimer
+maimers
+maiming
+maims
+main
+mainly
+mains
+majesty
+major
+majored
+majors
+makable
+make
+maker
+makers
+makes
+makeup
+makeups
+making
+makings
+malady
+malaria
+male
+males
+malice
+mall
+mallet
+mallets
+malls
+malt
+malted
+malting
+malts
+mama
+mamma
+mammal
+mammals
+mammas
+mammoth
+man
+manage
+managed
+manager
+manages
+mandate
+mane
+maned
+manes
+manger
+mangers
+mangle
+mangled
+mangler
+mangles
+manhood
+maniac
+maniacs
+mankind
+manlier
+manly
+manned
+manner
+manners
+manning
+manor
+manors
+mans
+mansion
+mantel
+mantels
+mantle
+mantled
+mantles
+manual
+manuals
+manure
+manured
+manurer
+manures
+many
+map
+maple
+maples
+mapped
+mapping
+maps
+mar
+marble
+marbled
+marbler
+marbles
+march
+marched
+marcher
+marches
+mare
+mares
+margin
+margins
+marine
+mariner
+marines
+mark
+marked
+marker
+markers
+market
+markets
+marking
+marks
+marquis
+married
+marries
+marrow
+marrows
+marry
+mars
+marsh
+marshal
+marshes
+mart
+marten
+martens
+martial
+marts
+martyr
+martyrs
+marvel
+marvels
+mash
+mashed
+masher
+mashers
+mashes
+mashing
+mask
+masked
+masker
+masking
+masks
+mason
+masoned
+masonry
+masons
+mass
+massage
+massed
+masses
+massing
+massive
+mast
+masted
+master
+masters
+mastery
+masts
+mat
+match
+matched
+matcher
+matches
+mate
+mated
+mater
+mates
+math
+mating
+matings
+matrix
+matron
+mats
+matted
+matter
+matters
+mature
+matured
+maturer
+matures
+max
+maxim
+maximal
+maxims
+maximum
+may
+maybe
+mayer
+mayest
+mayhap
+mayhem
+maying
+mayor
+mayoral
+mayors
+mays
+maze
+mazed
+mazedly
+mazer
+mazes
+mazing
+me
+mead
+meadow
+meadows
+meads
+meager
+meal
+meals
+mean
+meander
+meaner
+meanest
+meaning
+meanly
+means
+meant
+measles
+measure
+meat
+meats
+med
+medal
+medals
+meddle
+meddled
+meddler
+meddles
+media
+median
+medians
+medias
+mediate
+medic
+medical
+medics
+medium
+mediums
+meek
+meeker
+meekest
+meekly
+meet
+meeter
+meeting
+meetly
+meets
+megabit
+meld
+melding
+melds
+mellow
+mellows
+melody
+melon
+melons
+melt
+melted
+melter
+melting
+melts
+member
+members
+memo
+memoir
+memoirs
+memory
+memos
+men
+menace
+menaced
+menaces
+mend
+mended
+mender
+mending
+mends
+menial
+menials
+mens
+mensed
+menses
+mensing
+mental
+mention
+mentor
+mentors
+menu
+menus
+mer
+mercies
+mercury
+mercy
+mere
+merely
+merest
+merge
+merged
+merger
+mergers
+merges
+merging
+merit
+merited
+merits
+merrier
+merrily
+merry
+mesh
+meshed
+meshes
+meshing
+mess
+message
+messed
+messes
+messiah
+messier
+messily
+messing
+messy
+met
+meta
+metal
+metals
+mete
+meted
+meteor
+meteors
+meter
+metered
+meters
+metes
+method
+methods
+meting
+metric
+metrics
+mets
+mew
+mewed
+mews
+mica
+mice
+mid
+midday
+middle
+middled
+middler
+middles
+midst
+midsts
+midway
+midways
+mien
+miens
+mies
+miff
+miffed
+miffing
+miffs
+might
+mights
+mighty
+migrate
+mild
+milden
+milder
+mildest
+mildew
+mildews
+mildly
+mile
+mileage
+miler
+miles
+militia
+milk
+milked
+milker
+milkers
+milkier
+milking
+milks
+milky
+mill
+milled
+miller
+millers
+millet
+milling
+million
+mills
+mimic
+mimics
+mince
+minced
+mincer
+mincers
+minces
+mincing
+mind
+minded
+minder
+minders
+mindful
+minding
+minds
+mine
+mined
+miner
+mineral
+miners
+mines
+ming
+mingle
+mingled
+mingles
+minimal
+minimum
+mining
+minion
+minions
+mink
+minks
+minnow
+minnows
+minor
+minored
+minors
+mint
+minted
+minter
+minting
+mints
+minus
+minuses
+minute
+minuted
+minuter
+minutes
+miracle
+mire
+mired
+mires
+miring
+mirror
+mirrors
+mirth
+miser
+miserly
+misers
+misery
+misfit
+misfits
+mishap
+mishaps
+mislead
+misled
+misread
+miss
+missed
+misses
+missile
+missing
+mission
+missive
+mist
+mistake
+misted
+mister
+misters
+mistier
+misting
+mists
+misty
+mistype
+misuse
+misused
+misuser
+misuses
+mite
+mites
+mitten
+mittens
+mix
+mixed
+mixer
+mixers
+mixes
+mixing
+mixture
+ml
+moan
+moaned
+moaning
+moans
+moat
+moats
+mob
+mobs
+mock
+mocked
+mocker
+mockers
+mockery
+mocking
+mocks
+modal
+modally
+mode
+model
+models
+modem
+modems
+modern
+moderns
+modes
+modest
+modesty
+modify
+modular
+module
+modules
+modulo
+modulus
+modus
+moist
+moisten
+moistly
+mold
+molded
+molder
+molders
+moldier
+molding
+molds
+moldy
+mole
+moles
+molest
+molests
+molten
+mom
+moment
+moments
+moms
+monarch
+money
+moneyed
+moneyer
+moneys
+monitor
+monk
+monkey
+monkeys
+monks
+mono
+monster
+month
+monthly
+months
+mood
+moodier
+moods
+moody
+moon
+mooned
+mooning
+moonlit
+moons
+moor
+moored
+mooring
+moors
+moose
+moot
+mooted
+mop
+moped
+moper
+moping
+mops
+moral
+morale
+morales
+morally
+morals
+morass
+morbid
+more
+mored
+mores
+morion
+morn
+morning
+morrow
+morsel
+morsels
+mortal
+mortals
+mortar
+mortars
+mortify
+mosaic
+mosaics
+moss
+mosses
+mossier
+mossy
+most
+mostly
+motel
+motels
+moth
+mother
+mothers
+motif
+motifs
+motion
+motions
+motive
+motived
+motives
+motley
+motor
+motored
+motors
+motto
+mottoes
+mottos
+mould
+moulded
+moulder
+moulds
+mound
+mounded
+mounds
+mount
+mounted
+mounter
+mounts
+mourn
+mourned
+mourner
+mourns
+mouse
+mouser
+mouses
+mousing
+mouth
+mouthed
+mouther
+mouthes
+mouths
+movable
+move
+moved
+mover
+movers
+moves
+movie
+movies
+moving
+movings
+mow
+mowed
+mower
+mowers
+mowing
+mows
+much
+muck
+mucked
+mucker
+mucking
+mucks
+mud
+muddied
+muddier
+muddle
+muddled
+muddler
+muddles
+muddy
+muds
+muff
+muffin
+muffins
+muffle
+muffled
+muffler
+muffles
+muffs
+mug
+mugs
+mule
+mules
+muling
+mumble
+mumbled
+mumbler
+mumbles
+mummies
+mummy
+munch
+munched
+muncher
+munches
+mundane
+mural
+murals
+murder
+murders
+murkier
+murky
+murmur
+murmurs
+muscle
+muscled
+muscles
+muse
+mused
+muser
+muses
+museum
+museums
+mushier
+mushy
+music
+musical
+musics
+musing
+musings
+musk
+musket
+muskets
+muskrat
+musks
+muslin
+mussel
+mussels
+must
+mustard
+muster
+musters
+mustier
+musts
+musty
+mutable
+mutate
+mutated
+mutates
+mutator
+mute
+muted
+mutedly
+mutely
+muter
+mutes
+mutest
+muting
+mutiny
+mutter
+mutters
+mutton
+mutual
+muzzle
+muzzled
+muzzler
+muzzles
+my
+myriad
+myrtle
+myself
+mystery
+mystic
+mystics
+myth
+mythes
+nag
+nags
+nail
+nailed
+nailer
+nailing
+nails
+naive
+naively
+naiver
+naivete
+naked
+nakedly
+name
+named
+namely
+namer
+namers
+names
+naming
+nap
+napkin
+napkins
+naps
+narrow
+narrows
+nasal
+nasally
+nastier
+nasties
+nastily
+nasty
+nation
+nations
+native
+natives
+natural
+nature
+natured
+natures
+naught
+naughts
+naughty
+naval
+navally
+navies
+navy
+nay
+near
+nearby
+neared
+nearer
+nearest
+nearing
+nearly
+nears
+neat
+neaten
+neater
+neatest
+neatly
+neats
+nebula
+neck
+necked
+necker
+necking
+necks
+necktie
+need
+needed
+needer
+needful
+needier
+needing
+needle
+needled
+needler
+needles
+needly
+needs
+needy
+negate
+negated
+negater
+negates
+negator
+neglect
+neigh
+neither
+nephew
+nephews
+nerve
+nerved
+nerves
+nerving
+nervous
+nest
+nested
+nester
+nesting
+nestle
+nestled
+nestler
+nestles
+nests
+net
+nether
+nets
+netted
+netting
+nettle
+nettled
+nettles
+network
+neural
+neuron
+neurons
+neutral
+never
+new
+newborn
+newer
+newest
+newline
+newly
+newness
+news
+newsman
+newsmen
+newt
+newts
+next
+nibble
+nibbled
+nibbler
+nibbles
+nice
+nicely
+nicer
+nicest
+nicety
+niche
+niches
+niching
+nick
+nicked
+nickel
+nickels
+nicker
+nicking
+nicks
+niece
+nieces
+niftier
+nifties
+nifty
+nigh
+night
+nighted
+nightly
+nights
+nil
+nilly
+nimble
+nimbler
+nimbly
+nine
+nines
+ninety
+ninth
+nip
+nips
+nix
+nixed
+nixer
+nixes
+nixing
+no
+noble
+nobler
+nobles
+noblest
+nobly
+nobody
+nod
+nodded
+nodding
+node
+nodes
+nods
+noise
+noised
+noises
+noisier
+noisily
+noising
+noisy
+nominal
+non
+none
+nones
+nonzero
+nook
+nooks
+noon
+noonday
+nooning
+noons
+nope
+nor
+norm
+normal
+normals
+normed
+norms
+north
+norther
+nose
+nosed
+noses
+nosing
+nostril
+not
+notable
+notably
+notch
+notched
+notches
+note
+noted
+notedly
+noter
+notes
+nothing
+notice
+noticed
+notices
+notify
+noting
+notion
+notions
+noun
+nouns
+nourish
+novel
+novels
+novelty
+novice
+novices
+now
+nowhere
+nows
+nroff
+nuances
+nuclear
+nucleus
+null
+nulled
+nullify
+nulls
+numb
+numbed
+number
+numbers
+numbing
+numbly
+numbs
+numeral
+numeric
+nun
+nuns
+nuptial
+nurse
+nursed
+nurser
+nursery
+nurses
+nursing
+nurture
+nut
+nuts
+nymph
+nymphs
+oak
+oaken
+oaks
+oar
+oared
+oaring
+oars
+oasis
+oat
+oaten
+oater
+oath
+oaths
+oatmeal
+oats
+obey
+obeyed
+obeyer
+obeying
+obeys
+object
+objects
+oblate
+oblige
+obliged
+obliger
+obliges
+oblique
+oblong
+obscene
+obscure
+observe
+obtain
+obtains
+obviate
+obvious
+occlude
+occupy
+occur
+occurs
+ocean
+oceans
+octal
+octals
+octave
+octaves
+octopus
+odd
+odder
+oddest
+oddity
+oddly
+oddness
+odds
+ode
+oded
+oder
+odes
+odious
+odorous
+of
+off
+offend
+offends
+offer
+offered
+offerer
+offers
+office
+officer
+offices
+officio
+offing
+offs
+offset
+offsets
+oft
+often
+oftener
+oh
+oil
+oiled
+oiler
+oilers
+oilier
+oiliest
+oiling
+oils
+oily
+okay
+okays
+old
+olden
+older
+oldest
+oldness
+olive
+oliver
+olives
+omen
+omens
+ominous
+omit
+omits
+omitted
+on
+onanism
+once
+oncer
+one
+oneness
+oner
+onerous
+ones
+oneself
+ongoing
+onion
+onions
+online
+only
+ons
+onset
+onsets
+onto
+onward
+onwards
+oops
+ooze
+oozed
+oozes
+oozing
+opacity
+opal
+opals
+opaque
+opcode
+opcodes
+open
+opened
+opener
+openers
+openest
+opening
+openly
+opens
+opera
+operand
+operas
+operate
+opiate
+opiates
+opinion
+opium
+oppose
+opposed
+opposer
+opposes
+oppress
+opt
+opted
+optic
+optical
+optics
+optimal
+optimum
+opting
+option
+options
+opts
+or
+oracle
+oracles
+oral
+orally
+orals
+orange
+oranges
+oration
+orator
+orators
+oratory
+orb
+orbit
+orbital
+orbited
+orbiter
+orbits
+orchard
+orchid
+orchids
+ordain
+ordains
+ordeal
+ordeals
+order
+ordered
+orderer
+orderly
+orders
+ordinal
+ore
+ores
+organ
+organic
+organs
+orgies
+orgy
+orient
+orients
+orifice
+origin
+origins
+orion
+orly
+orphan
+orphans
+ostrich
+other
+others
+otter
+otters
+ought
+oughts
+ounce
+ounces
+our
+ours
+ourself
+out
+outcast
+outcome
+outcry
+outdoor
+outed
+outer
+outfit
+outfits
+outgrew
+outgrow
+outing
+outings
+outlast
+outlaw
+outlaws
+outlay
+outlays
+outlet
+outlets
+outline
+outlive
+outlook
+outness
+outpost
+output
+outputs
+outrage
+outrun
+outruns
+outs
+outset
+outside
+outvote
+outward
+outwit
+outwits
+oval
+ovally
+ovals
+ovaries
+ovary
+oven
+ovens
+over
+overall
+overdue
+overing
+overjoy
+overlap
+overlay
+overly
+overrun
+overs
+oversee
+overt
+overtly
+overuse
+ovum
+owe
+owed
+owes
+owing
+owl
+owler
+owls
+own
+owned
+owner
+owners
+owning
+owns
+ox
+oxen
+oxide
+oxides
+oxygen
+oxygens
+oyster
+oysters
+pa
+pace
+paced
+pacer
+pacers
+paces
+pacific
+pacify
+pacing
+pack
+package
+packed
+packer
+packers
+packet
+packets
+packing
+packs
+pact
+pacts
+pad
+padded
+paddies
+padding
+paddle
+paddled
+paddler
+paddles
+paddy
+pads
+pagan
+pagans
+page
+pageant
+paged
+pager
+pagers
+pages
+paging
+paid
+pail
+pails
+pain
+pained
+painful
+paining
+pains
+paint
+painted
+painter
+paints
+pair
+paired
+pairing
+pairs
+pal
+palace
+palaces
+palate
+palates
+pale
+paled
+palely
+paler
+pales
+palest
+palfrey
+paling
+pall
+pallid
+palling
+pally
+palm
+palmed
+palmer
+palming
+palms
+pals
+pan
+panacea
+pancake
+panda
+pandas
+pander
+panders
+pane
+panel
+panels
+panes
+pang
+pangs
+panic
+panics
+panned
+panning
+pans
+pansies
+pansy
+pant
+panted
+panther
+panties
+panting
+pantry
+pants
+panty
+papa
+papal
+papally
+paper
+papered
+paperer
+papers
+paprika
+par
+parade
+paraded
+parader
+parades
+paradox
+paragon
+parapet
+parcel
+parcels
+parch
+parched
+pardon
+pardons
+pare
+parent
+parents
+parer
+pares
+paring
+parings
+parish
+parity
+park
+parked
+parker
+parkers
+parking
+parks
+parole
+paroled
+paroles
+parried
+parrot
+parrots
+parry
+pars
+parse
+parsed
+parser
+parsers
+parses
+parsing
+parsley
+parson
+parsons
+part
+partake
+parted
+parter
+parters
+partial
+partied
+parties
+parting
+partly
+partner
+parts
+party
+pas
+pass
+passage
+passe
+passed
+passer
+passers
+passes
+passing
+passion
+passive
+past
+paste
+pasted
+pastes
+pastime
+pasting
+pastor
+pastors
+pastry
+pasts
+pasture
+pat
+patch
+patched
+patcher
+patches
+pated
+paten
+patent
+patents
+pater
+path
+pathos
+paths
+pathway
+patient
+patriot
+patrol
+patrols
+patron
+patrons
+pats
+patter
+pattern
+patters
+patties
+patty
+paucity
+pause
+paused
+pauses
+pausing
+pave
+paved
+paver
+paves
+paving
+paw
+pawed
+pawing
+pawn
+pawned
+pawner
+pawning
+pawns
+paws
+pay
+payable
+payed
+payer
+payers
+paying
+payment
+payoff
+payoffs
+payroll
+pays
+pea
+peace
+peaces
+peach
+peaches
+peacock
+peak
+peaked
+peaking
+peaks
+peal
+pealed
+pealing
+peals
+peanut
+peanuts
+pear
+pearl
+pearler
+pearls
+pearly
+pears
+peas
+peasant
+peat
+pebble
+pebbled
+pebbles
+peck
+pecked
+pecker
+pecking
+pecks
+peddler
+peek
+peeked
+peeking
+peeks
+peel
+peeled
+peeler
+peeling
+peels
+peep
+peeped
+peeper
+peepers
+peeping
+peeps
+peer
+peered
+peering
+peers
+peeve
+peeved
+peevers
+peeves
+peeving
+peg
+pegs
+pellet
+pellets
+pelt
+pelter
+pelting
+pelts
+pen
+penalty
+penance
+pence
+pencil
+pencils
+pend
+pended
+pending
+pends
+penguin
+penned
+pennies
+penning
+penny
+pens
+pension
+pensive
+pent
+people
+peopled
+peoples
+pep
+pepper
+peppers
+per
+percent
+perch
+perched
+perches
+perfect
+perform
+perfume
+perhaps
+peril
+perils
+period
+periods
+perish
+permit
+permits
+permute
+perplex
+persist
+person
+persons
+pertain
+perturb
+perusal
+peruse
+perused
+peruser
+peruses
+pervade
+pervert
+pest
+pester
+pesters
+pests
+pet
+petal
+petals
+peter
+petered
+peters
+pets
+petted
+petter
+petters
+pettier
+petting
+petty
+pew
+pews
+pewter
+phantom
+phase
+phased
+phaser
+phasers
+phases
+phasing
+phone
+phoned
+phoneme
+phones
+phoning
+photo
+photos
+phrase
+phrased
+phrases
+phyla
+phylum
+physic
+physics
+pi
+piano
+pianos
+piazza
+piazzas
+pick
+picked
+picker
+pickers
+picket
+pickets
+picking
+pickle
+pickled
+pickles
+picks
+pickup
+pickups
+picnic
+picnics
+picture
+pie
+piece
+pieced
+piecer
+pieces
+piecing
+pied
+pier
+pierce
+pierced
+pierces
+piers
+pies
+pieties
+piety
+pig
+pigeon
+pigeons
+pigment
+pigs
+pike
+piked
+piker
+pikes
+piking
+pile
+piled
+pilers
+piles
+pilgrim
+piling
+pilings
+pill
+pillage
+pillar
+pillars
+pillow
+pillows
+pills
+pilot
+piloted
+pilots
+pin
+pinch
+pinched
+pincher
+pinches
+pine
+pined
+pines
+ping
+pinger
+pinging
+pining
+pinion
+pinions
+pink
+pinked
+pinker
+pinkest
+pinking
+pinkly
+pinks
+pinned
+pinning
+pins
+pint
+pinter
+pints
+pioneer
+pious
+piously
+pipe
+piped
+piper
+pipers
+pipes
+piping
+pipings
+pique
+piqued
+piquing
+pirate
+pirated
+pirates
+piss
+pissed
+pisser
+pisses
+pissing
+pistil
+pistils
+pistol
+pistols
+piston
+pistons
+pit
+pitch
+pitched
+pitcher
+pitches
+piteous
+pitfall
+pith
+pithed
+pithes
+pithier
+pithing
+pithy
+pitied
+pitier
+pitiers
+pities
+pitiful
+pits
+pitted
+pity
+pitying
+pivot
+pivotal
+pivoted
+pivots
+pixel
+pixels
+placard
+place
+placed
+placer
+places
+placid
+placing
+plague
+plagued
+plaguer
+plagues
+plaid
+plaided
+plaids
+plain
+plainer
+plainly
+plains
+plait
+plaiter
+plaits
+plan
+planar
+plane
+planed
+planer
+planers
+planes
+planet
+planets
+planing
+plank
+planks
+planned
+planner
+plans
+plant
+planted
+planter
+plants
+plasma
+plaster
+plastic
+plate
+plateau
+plated
+platen
+platens
+plater
+platers
+plates
+plating
+platter
+play
+played
+player
+players
+playful
+playing
+plays
+plea
+plead
+pleaded
+pleader
+pleads
+pleas
+please
+pleased
+pleaser
+pleases
+pledge
+pledged
+pledger
+pledges
+plenary
+plenty
+plied
+plier
+pliers
+plies
+plight
+plod
+plods
+plot
+plots
+plotted
+plotter
+ploy
+ploys
+pluck
+plucked
+plucker
+plucky
+plug
+plugged
+plugs
+plum
+plumage
+plumb
+plumbed
+plumber
+plumbs
+plume
+plumed
+plumes
+pluming
+plump
+plumped
+plumpen
+plumper
+plumply
+plums
+plunder
+plunge
+plunged
+plunger
+plunges
+plural
+plurals
+plus
+pluses
+plush
+plushly
+ply
+plying
+poach
+poached
+poacher
+poaches
+pocket
+pockets
+pod
+pods
+poem
+poems
+poet
+poetic
+poetics
+poetry
+poets
+point
+pointed
+pointer
+points
+pointy
+poise
+poised
+poises
+poising
+poison
+poisons
+poke
+poked
+poker
+pokes
+poking
+polar
+pole
+poled
+polemic
+poler
+poles
+police
+policed
+polices
+policy
+poling
+polish
+polite
+politer
+politic
+poll
+polled
+pollen
+poller
+polling
+polls
+pollute
+polo
+polygon
+polymer
+pomp
+pompous
+pond
+ponder
+ponders
+ponds
+ponies
+pony
+poof
+pool
+pooled
+pooling
+pools
+poor
+poorer
+poorest
+poorly
+pop
+pope
+popes
+poplar
+popped
+poppied
+poppies
+popping
+poppy
+pops
+popular
+porch
+porches
+pore
+pored
+pores
+poring
+pork
+porker
+porn
+port
+portal
+portals
+ported
+portend
+porter
+porters
+porting
+portion
+portly
+portray
+ports
+pose
+posed
+poser
+posers
+poses
+posing
+posit
+posited
+posits
+possess
+possum
+possums
+post
+postage
+postal
+posted
+poster
+posters
+posting
+postman
+posts
+posture
+pot
+potash
+potato
+potent
+pots
+potted
+potter
+potters
+pottery
+potting
+pouch
+pouched
+pouches
+poultry
+pounce
+pounced
+pounces
+pound
+pounded
+pounder
+pounds
+pour
+poured
+pourer
+pourers
+pouring
+pours
+pout
+pouted
+pouter
+pouting
+pouts
+poverty
+powder
+powders
+power
+powered
+powers
+pox
+poxes
+prairie
+praise
+praised
+praiser
+praises
+prance
+pranced
+prancer
+prances
+prank
+pranks
+prate
+prated
+prater
+prates
+prating
+pray
+prayed
+prayer
+prayers
+praying
+prays
+preach
+precede
+precept
+precise
+predate
+predict
+preempt
+preface
+prefer
+prefers
+prefix
+prelate
+prelude
+premier
+premise
+premium
+prepare
+prepend
+present
+preset
+presets
+preside
+press
+pressed
+presser
+presses
+presume
+pretend
+pretext
+pretty
+prevail
+prevent
+preview
+prey
+preyed
+preyer
+preying
+preys
+price
+priced
+pricer
+pricers
+prices
+pricing
+prick
+pricked
+pricker
+prickly
+pricks
+pride
+prided
+prides
+priding
+pried
+prier
+pries
+priest
+priests
+primacy
+primary
+prime
+primed
+primely
+primer
+primers
+primes
+priming
+prince
+princes
+print
+printed
+printer
+prints
+prior
+priori
+priorly
+priors
+priory
+prism
+prisms
+prison
+prisons
+privacy
+private
+privies
+privy
+prize
+prized
+prizer
+prizers
+prizes
+prizing
+pro
+probate
+probe
+probed
+prober
+probes
+probing
+problem
+proceed
+process
+procure
+produce
+product
+profane
+profess
+proffer
+profile
+profit
+profits
+progeny
+program
+project
+prolog
+prologs
+prolong
+promise
+promote
+prompt
+prompts
+prone
+pronely
+prong
+pronged
+prongs
+pronoun
+proof
+proofed
+proofer
+proofs
+prop
+propel
+propels
+proper
+prophet
+propose
+props
+pros
+prose
+proser
+prosing
+prosper
+protect
+protege
+protein
+protest
+proton
+protons
+proud
+prouder
+proudly
+prove
+proved
+proven
+prover
+proverb
+provers
+proves
+provide
+proving
+provoke
+prow
+prowess
+prowl
+prowled
+prowler
+prowls
+prows
+prudent
+prune
+pruned
+pruner
+pruners
+prunes
+pruning
+pry
+prying
+psalm
+psalms
+pseudo
+psyche
+psyches
+pub
+public
+publics
+publish
+pubs
+pucker
+puckers
+pudding
+puddle
+puddled
+puddler
+puddles
+puff
+puffed
+puffer
+puffers
+puffing
+puffs
+pull
+pulled
+puller
+pulley
+pulleys
+pulling
+pulls
+pulp
+pulper
+pulping
+pulpit
+pulpits
+pulse
+pulsed
+pulser
+pulses
+pulsing
+pump
+pumped
+pumper
+pumping
+pumpkin
+pumps
+pun
+punch
+punched
+puncher
+punches
+punier
+punish
+puns
+punt
+punted
+punter
+punters
+punting
+punts
+puny
+pup
+pupa
+pupas
+pupil
+pupils
+puppet
+puppets
+puppies
+puppy
+pups
+pure
+purely
+purer
+purest
+purge
+purged
+purger
+purges
+purging
+purify
+purity
+purple
+purpled
+purpler
+purples
+purport
+purpose
+purr
+purred
+purring
+purrs
+purse
+pursed
+purser
+pursers
+purses
+pursing
+pursue
+pursued
+pursuer
+pursues
+pursuit
+purview
+push
+pushed
+pusher
+pushers
+pushes
+pushing
+puss
+pussier
+pussies
+pussy
+put
+puts
+putter
+putters
+putting
+puzzle
+puzzled
+puzzler
+puzzles
+pygmies
+pygmy
+pyramid
+quack
+quacked
+quacks
+quail
+quails
+quaint
+quake
+quaked
+quaker
+quakers
+quakes
+quaking
+qualify
+quality
+qualm
+qualms
+quanta
+quantum
+quarrel
+quarry
+quart
+quarter
+quartet
+quarts
+quartz
+quash
+quashed
+quashes
+quasi
+quaver
+quavers
+quay
+quays
+queen
+queenly
+queens
+queer
+queerer
+queerly
+queers
+quell
+quelled
+queller
+quells
+quench
+queried
+querier
+queries
+query
+quest
+quested
+quester
+quests
+queue
+queued
+queuer
+queuers
+queues
+quick
+quicken
+quicker
+quickly
+quiet
+quieted
+quieten
+quieter
+quietly
+quiets
+quill
+quills
+quilt
+quilted
+quilter
+quilts
+quinine
+quit
+quite
+quits
+quitter
+quiver
+quivers
+quiz
+quizzed
+quizzes
+quo
+quota
+quotas
+quote
+quoted
+quotes
+quoth
+quoting
+rabbit
+rabbits
+rabble
+rabbled
+rabbler
+raccoon
+race
+raced
+racer
+racers
+races
+racial
+racing
+rack
+racked
+racker
+racket
+rackets
+racking
+racks
+radar
+radars
+radial
+radiant
+radiate
+radical
+radio
+radioed
+radios
+radish
+radius
+radix
+radixes
+raft
+rafter
+rafters
+rafts
+rag
+rage
+raged
+rages
+ragged
+raging
+rags
+raid
+raided
+raider
+raiders
+raiding
+raids
+rail
+railed
+railer
+railers
+railing
+rails
+railway
+raiment
+rain
+rainbow
+rained
+rainier
+raining
+rains
+rainy
+raise
+raised
+raiser
+raisers
+raises
+raisin
+raising
+raisins
+rake
+raked
+raker
+rakes
+raking
+rallied
+rallies
+rally
+ram
+ramble
+rambled
+rambler
+rambles
+ramp
+rampart
+ramped
+ramping
+ramps
+rams
+ramses
+ran
+ranch
+ranched
+rancher
+ranches
+random
+rang
+range
+ranged
+ranger
+rangers
+ranges
+ranging
+rank
+ranked
+ranker
+rankers
+rankest
+ranking
+rankle
+rankled
+rankles
+rankly
+ranks
+ransack
+ransom
+ransoms
+rant
+ranted
+ranter
+ranters
+ranting
+rants
+rap
+rape
+raped
+raper
+rapes
+rapid
+rapidly
+rapids
+raping
+raps
+rapt
+raptly
+rapture
+rare
+rarely
+rarer
+rarest
+raring
+rarity
+rascal
+rascals
+rash
+rasher
+rashes
+rashly
+rasp
+rasped
+rasper
+rasping
+rasps
+raster
+rasters
+rat
+rate
+rated
+rater
+raters
+rates
+rather
+ratify
+rating
+ratings
+ratio
+ration
+rations
+ratios
+rats
+rattle
+rattled
+rattler
+rattles
+ravage
+ravaged
+ravager
+ravages
+rave
+raved
+raven
+ravened
+ravener
+ravens
+raver
+raves
+ravine
+ravined
+ravines
+raving
+ravings
+raw
+rawer
+rawest
+rawly
+rawness
+raws
+ray
+rayed
+rays
+razor
+razors
+re
+reach
+reached
+reacher
+reaches
+react
+reacted
+reactor
+reacts
+read
+reader
+readers
+readied
+readier
+readies
+readily
+reading
+readout
+reads
+ready
+real
+realest
+realign
+realism
+realist
+reality
+realize
+really
+realm
+realms
+reals
+ream
+reamed
+reamer
+reaming
+reams
+reap
+reaped
+reaper
+reaping
+reaps
+rear
+reared
+rearer
+rearing
+rearmed
+rearms
+rears
+reason
+reasons
+rebate
+rebated
+rebater
+rebates
+rebel
+rebells
+rebels
+rebids
+rebirth
+rebonds
+reboot
+reboots
+reborn
+rebound
+rebuff
+rebuffs
+rebuild
+rebuilt
+rebuke
+rebuked
+rebuker
+rebukes
+rebut
+recall
+recalls
+recast
+recasts
+recede
+receded
+recedes
+receipt
+receive
+recent
+recess
+recipe
+recipes
+recital
+recite
+recited
+reciter
+recites
+reckon
+reckons
+reclaim
+recline
+recode
+recoded
+recodes
+recoil
+recoils
+record
+records
+recored
+recount
+recover
+recruit
+recta
+rector
+rectors
+rectum
+rectums
+recur
+recurs
+recurse
+recycle
+red
+redden
+redder
+reddest
+reddish
+redeem
+redeems
+redials
+redly
+redness
+redoing
+redone
+redraw
+redrawn
+redraws
+redress
+reds
+reduce
+reduced
+reducer
+reduces
+reed
+reeder
+reeding
+reeds
+reef
+reefer
+reefing
+reefs
+reel
+reelect
+reeled
+reeler
+reeling
+reels
+reenter
+reeves
+refaced
+refaces
+refer
+referee
+refers
+refill
+refills
+refine
+refined
+refiner
+refines
+reflect
+reflex
+refocus
+reform
+reforms
+refrain
+refresh
+refried
+refries
+refry
+refuel
+refuels
+refuge
+refuged
+refugee
+refuges
+refund
+refunds
+refusal
+refuse
+refused
+refuser
+refuses
+refute
+refuted
+refuter
+refutes
+regain
+regains
+regal
+regaled
+regally
+regard
+regards
+regent
+regents
+regime
+regimen
+regimes
+region
+regions
+regress
+regret
+regrets
+regrids
+regroup
+regular
+rehash
+reign
+reigned
+reigns
+rein
+reined
+reining
+reins
+reissue
+reject
+rejects
+rejoice
+rejoin
+rejoins
+reknit
+relabel
+relapse
+relate
+related
+relater
+relates
+relax
+relaxed
+relaxer
+relaxes
+relay
+relayed
+relays
+release
+relent
+relents
+relic
+relics
+relied
+relief
+reliefs
+relier
+relies
+relieve
+relish
+relive
+relives
+reload
+reloads
+rely
+relying
+remade
+remain
+remains
+remark
+remarks
+remedy
+remind
+reminds
+remixed
+remnant
+remodel
+remorse
+remote
+removal
+remove
+removed
+remover
+removes
+renal
+rename
+renamed
+renames
+rend
+render
+renders
+rending
+rends
+renew
+renewal
+renewed
+renewer
+renews
+reno
+renown
+rent
+rental
+rentals
+rented
+renter
+renters
+renting
+rents
+reopen
+reopens
+reorder
+repacks
+repaid
+repaint
+repair
+repairs
+repast
+repasts
+repay
+repays
+repeal
+repeals
+repeat
+repeats
+repel
+repels
+repent
+repents
+repine
+repined
+repiner
+replace
+replay
+replays
+replete
+replica
+replied
+replier
+replies
+reply
+report
+reports
+repose
+reposed
+reposes
+repost
+reposts
+repress
+reprint
+reproof
+reprove
+reptile
+repulse
+repute
+reputed
+reputes
+request
+requiem
+require
+requite
+reran
+reread
+rereads
+reroute
+rerun
+reruns
+res
+rescan
+rescans
+rescue
+rescued
+rescuer
+rescues
+resell
+resells
+resends
+resent
+resents
+reserve
+reset
+reseted
+reseter
+resets
+reshape
+reside
+resided
+resider
+resides
+residue
+resign
+resigns
+resin
+resined
+resins
+resist
+resists
+resize
+resized
+resizes
+resold
+resolve
+resort
+resorts
+resound
+respect
+respite
+respond
+rest
+restart
+restate
+rested
+rester
+restful
+resting
+restive
+restore
+rests
+result
+results
+resume
+resumed
+resumes
+retail
+retails
+retain
+retains
+retard
+reticle
+retied
+retina
+retinal
+retinas
+retinue
+retire
+retired
+retires
+retold
+retort
+retorts
+retrace
+retract
+retrain
+retreat
+retried
+retrier
+retries
+retry
+return
+returns
+retype
+retyped
+retypes
+reunion
+reunite
+reuse
+reused
+reuses
+reusing
+revamp
+revamps
+reveal
+reveals
+revel
+revelry
+revels
+revenge
+revenue
+revere
+revered
+reveres
+reverse
+revert
+reverts
+review
+reviews
+revile
+reviled
+reviler
+revise
+revised
+reviser
+revises
+revisit
+revival
+revive
+revived
+reviver
+revives
+revoke
+revoked
+revoker
+revokes
+revolt
+revolts
+revolve
+reward
+rewards
+rewind
+rewinds
+rewired
+rewires
+reword
+rewords
+rework
+reworks
+rewound
+rewrite
+rewrote
+rhubarb
+rhyme
+rhymed
+rhymer
+rhymes
+rhyming
+rhythm
+rhythms
+rib
+ribbed
+ribbing
+ribbon
+ribbons
+ribs
+rice
+ricer
+rices
+rich
+richen
+richer
+riches
+richest
+richly
+rid
+ridden
+riddle
+riddled
+riddler
+riddles
+ride
+rider
+riders
+rides
+ridge
+ridged
+ridges
+ridging
+riding
+ridings
+rids
+rifle
+rifled
+rifler
+rifles
+rifling
+rift
+rig
+rigged
+rigging
+right
+righted
+righten
+righter
+rightly
+rights
+rigid
+rigidly
+rigs
+rill
+rim
+rime
+rimer
+riming
+rims
+rind
+rinded
+rinds
+ring
+ringed
+ringer
+ringers
+ringing
+rings
+rinse
+rinsed
+rinser
+rinses
+rinsing
+riot
+rioted
+rioter
+rioters
+rioting
+riotous
+riots
+rip
+ripe
+ripely
+ripen
+ripened
+ripener
+ripens
+riper
+ripest
+ripped
+ripping
+ripple
+rippled
+rippler
+ripples
+rips
+rise
+risen
+riser
+risers
+rises
+rising
+risings
+risk
+risked
+risker
+risking
+risks
+rite
+rited
+rites
+ritual
+rituals
+rival
+rivalry
+rivals
+rive
+rived
+riven
+river
+rivers
+rivet
+riveted
+riveter
+rivets
+riving
+rivulet
+road
+roads
+roadway
+roam
+roamed
+roamer
+roaming
+roams
+roar
+roared
+roarer
+roaring
+roars
+roast
+roasted
+roaster
+roasts
+rob
+robbed
+robber
+robbers
+robbery
+robbing
+robe
+robed
+robes
+robin
+robing
+robins
+robot
+robotic
+robots
+robs
+robust
+rock
+rocked
+rocker
+rockers
+rocket
+rockets
+rockier
+rockies
+rocking
+rocks
+rocky
+rod
+rode
+rods
+roe
+roes
+rogue
+rogues
+roguing
+role
+roles
+roll
+rolled
+roller
+rollers
+rolling
+rolls
+romance
+romp
+romped
+romper
+rompers
+romping
+romps
+roof
+roofed
+roofer
+roofers
+roofing
+roofs
+rook
+rooks
+room
+roomed
+roomer
+roomers
+rooming
+rooms
+roost
+rooster
+root
+rooted
+rooter
+rooting
+roots
+rope
+roped
+roper
+ropers
+ropes
+roping
+rose
+rosebud
+roses
+rosier
+rosy
+rot
+rotary
+rotate
+rotated
+rotates
+rotator
+rots
+rotten
+rouge
+rough
+roughed
+roughen
+rougher
+roughly
+rouging
+round
+rounded
+rounder
+roundly
+rounds
+roundup
+rouse
+roused
+rouser
+rouses
+rousing
+rout
+route
+routed
+router
+routers
+routes
+routine
+routing
+rove
+roved
+rover
+roves
+roving
+row
+rowed
+rowen
+rower
+rowers
+rowing
+rows
+royal
+royally
+royalty
+rub
+rubbed
+rubber
+rubbers
+rubbing
+rubbish
+rubble
+rubbled
+rubies
+rubout
+rubs
+ruby
+rudder
+rudders
+ruddier
+ruddy
+rude
+rudely
+ruder
+rudest
+rue
+rues
+ruffian
+ruffle
+ruffled
+ruffler
+ruffles
+rug
+rugged
+rugs
+ruin
+ruined
+ruiner
+ruing
+ruining
+ruinous
+ruins
+rule
+ruled
+ruler
+rulers
+rules
+ruling
+rulings
+rum
+rumble
+rumbled
+rumbler
+rumbles
+rumen
+rumens
+rump
+rumple
+rumpled
+rumples
+rumply
+rumps
+run
+runaway
+rung
+rungs
+runner
+runners
+running
+runs
+runtime
+rupture
+rural
+rurally
+rush
+rushed
+rusher
+rushes
+rushing
+russet
+russets
+rust
+rusted
+rustic
+rustier
+rusting
+rustle
+rustled
+rustler
+rustles
+rusts
+rusty
+rut
+ruts
+rye
+sable
+sables
+sack
+sacked
+sacker
+sacking
+sacks
+sacred
+sad
+sadden
+saddens
+sadder
+saddest
+saddle
+saddled
+saddler
+saddles
+sadism
+sadist
+sadists
+sadly
+sadness
+safe
+safely
+safer
+safes
+safest
+safety
+sag
+sage
+sagely
+sages
+sags
+said
+sail
+sailed
+sailer
+sailing
+sailor
+sailors
+sails
+saint
+sainted
+saintly
+saints
+sake
+saker
+sakes
+salable
+salad
+salads
+salary
+sale
+sales
+salient
+saline
+saliva
+sallied
+sallies
+sallow
+sally
+salmon
+salmons
+salon
+salons
+saloon
+saloons
+salt
+salted
+salter
+salters
+saltier
+salting
+salts
+salty
+salute
+saluted
+saluter
+salutes
+salvage
+salve
+salver
+salves
+salving
+same
+sample
+sampled
+sampler
+samples
+sand
+sandal
+sandals
+sanded
+sander
+sanders
+sandier
+sanding
+sands
+sandy
+sane
+sanely
+saner
+sanest
+sang
+sanity
+sank
+sap
+sapling
+saps
+sarcasm
+sash
+sashed
+sashes
+sat
+satchel
+sate
+sated
+sates
+satin
+sating
+satire
+satires
+satisfy
+satyr
+sauce
+saucer
+saucers
+sauces
+saucier
+saucing
+saucy
+saunter
+sausage
+savage
+savaged
+savager
+savages
+save
+saved
+saver
+savers
+saves
+saving
+savings
+saw
+sawed
+sawer
+sawing
+sawmill
+saws
+say
+sayer
+sayers
+saying
+sayings
+says
+scalar
+scalars
+scald
+scalded
+scalds
+scale
+scaled
+scaler
+scalers
+scales
+scalier
+scaling
+scallop
+scalp
+scalper
+scalps
+scaly
+scam
+scamper
+scams
+scan
+scandal
+scanned
+scanner
+scans
+scant
+scantly
+scanty
+scar
+scarce
+scarcer
+scare
+scared
+scarer
+scares
+scarf
+scarfs
+scarier
+scaring
+scarlet
+scars
+scary
+scatter
+scene
+scenery
+scenes
+scenic
+scenics
+scent
+scented
+scents
+schema
+schemas
+scheme
+schemed
+schemer
+schemes
+scholar
+school
+schools
+science
+scissor
+scoff
+scoffed
+scoffer
+scoffs
+scold
+scolded
+scolder
+scolds
+scoop
+scooped
+scooper
+scoops
+scope
+scoped
+scopes
+scoping
+scorch
+score
+scored
+scorer
+scorers
+scores
+scoring
+scorn
+scorned
+scorner
+scorns
+scour
+scoured
+scourer
+scourge
+scours
+scout
+scouted
+scouter
+scouts
+scow
+scowl
+scowled
+scowler
+scowls
+scrap
+scrape
+scraped
+scraper
+scrapes
+scraps
+scratch
+scrawl
+scrawls
+scream
+screams
+screech
+screen
+screens
+screw
+screwed
+screwer
+screws
+scribe
+scriber
+scribes
+script
+scripts
+scroll
+scrolls
+scrooge
+scrub
+scrubs
+scruple
+scuffle
+sculpt
+sculpts
+scum
+scums
+scurry
+scuttle
+scythe
+scythes
+sea
+seal
+sealed
+sealer
+sealing
+seals
+sealy
+seam
+seaman
+seamed
+seamen
+seamer
+seaming
+seams
+seaport
+sear
+search
+seared
+searing
+sears
+seas
+seaside
+season
+seasons
+seat
+seated
+seater
+seating
+seats
+seaward
+seaweed
+secede
+seceded
+seceder
+secedes
+second
+seconds
+secrecy
+secret
+secrete
+secrets
+sect
+section
+sector
+sectors
+sects
+secular
+secure
+secured
+securer
+secures
+sedge
+seduce
+seduced
+seducer
+seduces
+see
+seed
+seeded
+seeder
+seeders
+seeding
+seeds
+seeing
+seek
+seeker
+seekers
+seeking
+seeks
+seem
+seemed
+seeming
+seemly
+seems
+seen
+seep
+seeped
+seeping
+seeps
+seer
+seers
+sees
+seethe
+seethed
+seethes
+segment
+seismic
+seize
+seized
+seizer
+seizers
+seizes
+seizin
+seizing
+seizins
+seizor
+seizors
+seizure
+seldom
+select
+selects
+self
+selfish
+sell
+seller
+sellers
+selling
+sells
+selves
+seminal
+seminar
+senate
+senates
+senator
+send
+sender
+senders
+sending
+sends
+senior
+seniors
+sense
+sensed
+senses
+sensing
+sensor
+sensors
+sensory
+sent
+sentry
+sequel
+sequels
+serene
+serf
+serfs
+serial
+serials
+series
+serious
+sermon
+sermons
+serpent
+serum
+serums
+servant
+serve
+served
+server
+servers
+serves
+service
+servile
+serving
+session
+set
+sets
+setter
+setters
+setting
+settle
+settled
+settler
+settles
+setup
+setups
+seven
+sevens
+seventh
+seventy
+sever
+several
+severe
+severed
+severer
+severs
+sew
+sewed
+sewer
+sewers
+sewing
+sews
+sex
+sexed
+sexes
+sexism
+sexist
+sexists
+sexual
+shabby
+shack
+shacked
+shackle
+shacks
+shade
+shaded
+shader
+shades
+shadier
+shadily
+shading
+shadow
+shadows
+shadowy
+shady
+shaft
+shafted
+shafts
+shaggy
+shake
+shaken
+shaker
+shakers
+shakes
+shakier
+shaking
+shaky
+shale
+shales
+shall
+shallow
+sham
+shame
+shamed
+shames
+shaming
+shams
+shanty
+shape
+shaped
+shapely
+shaper
+shapers
+shapes
+shaping
+share
+shared
+sharer
+sharers
+shares
+sharing
+shark
+sharks
+sharp
+sharped
+sharpen
+sharper
+sharply
+sharps
+shatter
+shave
+shaved
+shaven
+shaver
+shaves
+shaving
+shawl
+shawls
+she
+sheaf
+shear
+sheared
+shearer
+shears
+sheath
+sheaths
+sheaves
+shed
+sheds
+sheep
+sheer
+sheered
+sheerly
+sheet
+sheeted
+sheeter
+sheets
+shelf
+shelfs
+shell
+shelled
+sheller
+shells
+shelter
+shelve
+shelved
+shelver
+shelves
+sheriff
+shied
+shield
+shields
+shier
+shies
+shiest
+shift
+shifted
+shifter
+shifts
+shifty
+shimmer
+shin
+shine
+shined
+shiner
+shiners
+shines
+shingle
+shinier
+shining
+shiny
+ship
+shipped
+shipper
+ships
+shirk
+shirker
+shirks
+shirt
+shirts
+shit
+shiver
+shivers
+shoal
+shoals
+shock
+shocked
+shocker
+shocks
+shod
+shoe
+shoed
+shoeing
+shoer
+shoes
+shone
+shook
+shoot
+shooter
+shoots
+shop
+shopped
+shopper
+shops
+shore
+shored
+shores
+shoring
+shorn
+short
+shorted
+shorten
+shorter
+shortly
+shorts
+shot
+shotgun
+shots
+should
+shout
+shouted
+shouter
+shouts
+shove
+shoved
+shovel
+shovels
+shover
+shoves
+shoving
+show
+showed
+shower
+showers
+showing
+shown
+shows
+shrank
+shred
+shreds
+shrew
+shrewd
+shrews
+shriek
+shrieks
+shrill
+shrilly
+shrimp
+shrine
+shrines
+shrink
+shrinks
+shrivel
+shroud
+shrouds
+shrub
+shrubs
+shrug
+shrugs
+shrunk
+shudder
+shuffle
+shun
+shuns
+shut
+shuts
+shutter
+shuttle
+shy
+shying
+shyly
+shyness
+sibling
+sick
+sicken
+sicker
+sickest
+sicking
+sickle
+sickled
+sickly
+sicks
+side
+sided
+sides
+siding
+sidings
+siege
+sieges
+sieging
+sierra
+sierras
+sieve
+sievers
+sieves
+sieving
+sift
+sifted
+sifter
+sifting
+sifts
+sigh
+sighed
+sigher
+sighing
+sighs
+sight
+sighted
+sighter
+sightly
+sights
+sign
+signal
+signals
+signed
+signer
+signers
+signet
+signify
+signing
+signs
+silence
+silent
+silents
+silicon
+silk
+silken
+silkier
+silkily
+silks
+silky
+sill
+sillier
+sills
+silly
+silt
+silted
+silting
+silts
+silver
+silvers
+silvery
+similar
+simmer
+simmers
+simple
+simpler
+simples
+simplex
+simply
+sin
+since
+sincere
+sine
+sines
+sinew
+sinews
+sinful
+sing
+singed
+singer
+singers
+singing
+single
+singled
+singles
+singly
+sings
+sining
+sink
+sinked
+sinker
+sinkers
+sinking
+sinks
+sinned
+sinner
+sinners
+sinning
+sins
+sip
+sips
+sir
+sire
+sired
+siren
+sirens
+sires
+siring
+sirs
+sirup
+sister
+sisters
+sit
+site
+sited
+sites
+siting
+sits
+sitter
+sitters
+sitting
+situate
+six
+sixes
+sixteen
+sixth
+sixthly
+sixties
+sixty
+sizable
+size
+sized
+sizer
+sizers
+sizes
+sizing
+sizings
+skate
+skated
+skater
+skaters
+skates
+skating
+skeptic
+sketch
+sketchy
+skew
+skewed
+skewer
+skewers
+skewing
+skews
+ski
+skied
+skien
+skier
+skies
+skiing
+skill
+skilled
+skills
+skim
+skimmed
+skimmer
+skimp
+skimped
+skimps
+skims
+skin
+skinned
+skinner
+skins
+skip
+skipped
+skipper
+skips
+skirt
+skirted
+skirter
+skirts
+skis
+skulk
+skulked
+skulker
+skulks
+skull
+skulled
+skulls
+skunk
+skunks
+sky
+skying
+skylark
+slab
+slabs
+slack
+slacked
+slacken
+slacker
+slackly
+slacks
+slain
+slam
+slammed
+slams
+slander
+slang
+slant
+slanted
+slants
+slap
+slapped
+slaps
+slash
+slashed
+slasher
+slashes
+slat
+slate
+slated
+slater
+slaters
+slates
+slating
+slats
+slave
+slaved
+slaver
+slavery
+slaves
+slaving
+slay
+slayer
+slayers
+slaying
+slays
+sled
+sledge
+sledges
+sleds
+sleek
+sleekly
+sleep
+sleeper
+sleeps
+sleepy
+sleet
+sleeve
+sleeved
+sleeves
+sleigh
+sleighs
+sleken
+slender
+slept
+slew
+slewed
+slewing
+slice
+sliced
+slicer
+slicers
+slices
+slicing
+slick
+slicker
+slickly
+slicks
+slid
+slide
+slider
+sliders
+slides
+sliding
+slier
+sliest
+slight
+slights
+slim
+slime
+slimed
+slimes
+slimier
+sliming
+slimly
+slimy
+sling
+slinger
+slings
+slip
+slipped
+slipper
+slips
+slit
+slits
+slogan
+slogans
+slop
+slope
+sloped
+sloper
+slopers
+slopes
+sloping
+slopped
+sloppy
+slops
+slot
+sloth
+sloths
+slots
+slotted
+slouch
+slow
+slowed
+slower
+slowest
+slowing
+slowly
+slows
+slug
+slugs
+slum
+slumber
+slump
+slumped
+slumps
+slums
+slung
+slur
+slurs
+sly
+slyly
+smack
+smacked
+smacker
+smacks
+small
+smaller
+smart
+smarted
+smarten
+smarter
+smartly
+smarts
+smash
+smashed
+smasher
+smashes
+smear
+smeared
+smearer
+smears
+smell
+smelled
+smeller
+smells
+smelly
+smelt
+smelter
+smelts
+smile
+smiled
+smiler
+smiles
+smiling
+smite
+smiter
+smith
+smiths
+smithy
+smiting
+smitten
+smock
+smocks
+smog
+smoke
+smoked
+smoker
+smokers
+smokes
+smokier
+smokies
+smoking
+smoky
+smolder
+smooth
+smote
+smother
+smug
+smuggle
+smugly
+snail
+snails
+snake
+snaked
+snakes
+snaking
+snap
+snapped
+snapper
+snappy
+snaps
+snare
+snared
+snarer
+snares
+snarf
+snarfed
+snarfs
+snaring
+snarl
+snarled
+snarler
+snarls
+snatch
+sneak
+sneaked
+sneaker
+sneaks
+sneaky
+sneer
+sneered
+sneerer
+sneers
+sneeze
+sneezed
+sneezer
+sneezes
+sniff
+sniffed
+sniffer
+sniffs
+snoop
+snooped
+snooper
+snoops
+snore
+snored
+snorer
+snores
+snoring
+snort
+snorted
+snorter
+snorts
+snout
+snouted
+snouts
+snow
+snowed
+snowier
+snowily
+snowing
+snowman
+snowmen
+snows
+snowy
+snuff
+snuffed
+snuffer
+snuffs
+snug
+snuggle
+snugly
+snugs
+so
+soak
+soaked
+soaker
+soaking
+soaks
+soap
+soaped
+soaping
+soaps
+soar
+soared
+soarer
+soaring
+soars
+sob
+sober
+sobered
+soberer
+soberly
+sobers
+sobs
+soccer
+social
+society
+sock
+socked
+socket
+sockets
+socking
+socks
+sod
+soda
+sodium
+sodomy
+sods
+sofa
+sofas
+soft
+soften
+softens
+softer
+softest
+softly
+soil
+soiled
+soiling
+soils
+sojourn
+solace
+solaced
+solacer
+solar
+sold
+solder
+solders
+soldier
+sole
+soled
+solely
+solemn
+soles
+solicit
+solid
+solidly
+solids
+soling
+solo
+soloed
+soloing
+solos
+soluble
+solve
+solved
+solvent
+solver
+solvers
+solves
+solving
+somber
+some
+someday
+somehow
+someone
+somers
+son
+sonar
+sonars
+song
+songs
+sonly
+sonnet
+sonnets
+sons
+soon
+sooner
+soonest
+soot
+sooth
+soothe
+soothed
+soother
+soothes
+soothly
+sorcery
+sordid
+sore
+sorely
+sorer
+sores
+sorest
+sorrier
+sorrow
+sorrows
+sorry
+sort
+sorted
+sorter
+sorters
+sorting
+sorts
+sos
+sought
+soul
+souled
+souls
+sound
+sounded
+sounder
+soundly
+sounds
+soup
+soups
+sour
+source
+sources
+soured
+sourer
+sourest
+souring
+sourly
+sours
+south
+souther
+soviet
+soviets
+space
+spaced
+spacer
+spacers
+spaces
+spacing
+spade
+spaded
+spader
+spades
+spading
+span
+spank
+spanked
+spanker
+spanks
+spanned
+spanner
+spans
+spare
+spared
+sparely
+sparer
+spares
+sparest
+sparing
+spark
+sparked
+sparker
+sparks
+sparrow
+sparse
+sparser
+spat
+spate
+spates
+spatial
+spats
+spatter
+spawn
+spawned
+spawner
+spawns
+speak
+speaker
+speaks
+spear
+speared
+spearer
+spears
+special
+species
+specify
+speck
+speckle
+specks
+spectra
+sped
+speech
+speed
+speeded
+speeder
+speeds
+speedup
+speedy
+spell
+spelled
+speller
+spells
+spend
+spender
+spends
+spent
+sphere
+spheres
+spice
+spiced
+spices
+spicier
+spicing
+spicy
+spider
+spiders
+spied
+spier
+spies
+spike
+spiked
+spiker
+spikes
+spiking
+spill
+spilled
+spiller
+spills
+spin
+spinach
+spinal
+spindle
+spine
+spines
+spinner
+spins
+spiral
+spirals
+spire
+spired
+spires
+spiring
+spirit
+spirits
+spit
+spite
+spited
+spites
+spiting
+spits
+splash
+spleen
+splice
+spliced
+splicer
+splices
+spline
+splined
+splines
+split
+splits
+spoil
+spoiled
+spoiler
+spoils
+spoke
+spoked
+spoken
+spokes
+spoking
+sponge
+sponged
+sponger
+sponges
+sponsor
+spook
+spooky
+spool
+spooled
+spooler
+spools
+spoon
+spooned
+spoons
+spore
+spored
+spores
+sporing
+sport
+sported
+sports
+spot
+spots
+spotted
+spotter
+spouse
+spouses
+spout
+spouted
+spouter
+spouts
+sprang
+sprawl
+sprawls
+spray
+sprayed
+sprayer
+sprays
+spread
+spreads
+spree
+sprees
+sprig
+spring
+springs
+springy
+sprint
+sprints
+sprite
+sprout
+sprouts
+spruce
+spruced
+sprucer
+sprung
+spun
+spur
+spurn
+spurned
+spurner
+spurns
+spurs
+spurt
+spurted
+spurts
+sputter
+spy
+spying
+squad
+squads
+squall
+squalls
+square
+squared
+squarer
+squares
+squash
+squat
+squatly
+squats
+squawk
+squawks
+squeak
+squeaks
+squeal
+squeals
+squeeze
+squid
+squids
+squint
+squints
+squire
+squires
+squirm
+squirms
+stab
+stabbed
+stable
+stabled
+stabler
+stables
+stably
+stabs
+stack
+stacked
+stacker
+stacks
+staff
+staffed
+staffer
+staffs
+stag
+stage
+staged
+stager
+stagers
+stages
+stagger
+staging
+stags
+staid
+staidly
+stain
+stained
+stainer
+stains
+stair
+stairs
+stake
+staked
+stakes
+staking
+stale
+staled
+stalely
+staler
+stales
+stalest
+staling
+stalk
+stalked
+stalker
+stalks
+stall
+stalled
+stalls
+stamen
+stamens
+stamina
+stammer
+stamp
+stamped
+stamper
+stamps
+stance
+stances
+stanch
+stand
+standby
+stander
+stands
+stanza
+stanzas
+staple
+stapled
+stapler
+staples
+star
+starch
+stare
+stared
+starer
+stares
+staring
+stark
+starkly
+starlet
+starred
+starry
+stars
+start
+started
+starter
+startle
+starts
+startup
+starve
+starved
+starver
+starves
+state
+stated
+stately
+stater
+states
+static
+statics
+stating
+station
+stative
+statue
+statued
+statues
+stature
+status
+statute
+staunch
+stave
+staved
+staves
+staving
+stay
+stayed
+stayer
+stayers
+staying
+stays
+stdio
+stead
+steady
+steak
+steaks
+steal
+stealer
+steals
+stealth
+steam
+steamed
+steamer
+steams
+steed
+steeds
+steel
+steeled
+steels
+steep
+steeped
+steepen
+steeper
+steeple
+steeply
+steeps
+steer
+steered
+steerer
+steers
+stellar
+stem
+stemmed
+stems
+stench
+stencil
+step
+stepped
+stepper
+steps
+stereo
+stereos
+sterile
+stern
+sternly
+sterns
+stew
+steward
+stewed
+stewing
+stews
+stick
+sticked
+sticker
+sticks
+sticky
+stiff
+stiffen
+stiffer
+stiffly
+stiffs
+stifle
+stifled
+stifler
+stifles
+stigma
+stigmas
+stile
+stiles
+still
+stilled
+stiller
+stills
+stimuli
+sting
+stinger
+stings
+stink
+stinker
+stinks
+stint
+stinted
+stinter
+stints
+stipend
+stipple
+stir
+stirred
+stirrer
+stirrup
+stirs
+stitch
+stock
+stocked
+stocker
+stocks
+stole
+stoled
+stolen
+stoles
+stomach
+stone
+stoned
+stoner
+stones
+stonier
+stoning
+stony
+stood
+stool
+stools
+stoop
+stooped
+stoops
+stop
+stopgap
+stopped
+stopper
+stops
+storage
+store
+stored
+stores
+storied
+stories
+storing
+stork
+storks
+storm
+stormed
+storms
+stormy
+story
+stout
+stouten
+stouter
+stoutly
+stove
+stover
+stoves
+stow
+stowed
+stowing
+stows
+strain
+strains
+strait
+straits
+strand
+strands
+strange
+strap
+straps
+stratum
+straw
+straws
+stray
+strayed
+strayer
+strays
+streak
+streaks
+stream
+streams
+street
+streets
+stress
+stretch
+strew
+strewn
+strews
+strewth
+strict
+stride
+strider
+strides
+strife
+strike
+striker
+strikes
+string
+strings
+stringy
+strip
+stripe
+striped
+striper
+stripes
+strips
+strive
+striver
+strives
+strobe
+strobed
+strobes
+strode
+stroke
+stroked
+stroker
+strokes
+stroll
+strolls
+strong
+strove
+struck
+strung
+strut
+struts
+stub
+stubbed
+stubble
+stubs
+stuck
+stud
+student
+studied
+studier
+studies
+studio
+studios
+studs
+study
+stuff
+stuffed
+stuffer
+stuffs
+stuffy
+stumble
+stump
+stumped
+stumper
+stumps
+stun
+stung
+stuns
+stunt
+stunted
+stunts
+stupefy
+stupid
+stupor
+sturdy
+style
+styled
+styler
+stylers
+styles
+styling
+stylish
+sub
+subdue
+subdued
+subduer
+subdues
+subfile
+subgoal
+subject
+sublime
+sublist
+submit
+submits
+submode
+subs
+subset
+subsets
+subside
+subsidy
+subsist
+subsume
+subtask
+subtle
+subtler
+subtly
+subtree
+subunit
+suburb
+suburbs
+subvert
+subway
+subways
+succeed
+success
+succumb
+such
+suck
+sucked
+sucker
+suckers
+sucking
+suckle
+suckled
+suckles
+sucks
+suction
+sudden
+suds
+sudser
+sudsing
+sue
+sued
+sueded
+sueding
+suer
+sues
+suffer
+suffers
+suffice
+suffix
+sugar
+sugared
+sugars
+suggest
+suicide
+suing
+suit
+suite
+suited
+suiters
+suites
+suiting
+suitor
+suitors
+suits
+sulk
+sulked
+sulkies
+sulking
+sulks
+sulky
+sullen
+sulphur
+sultan
+sultans
+sultry
+sum
+sumer
+summand
+summary
+summed
+summer
+summers
+summing
+summit
+summon
+summons
+sums
+sun
+sunbeam
+sunburn
+sundown
+sundry
+sung
+sunk
+sunken
+sunned
+sunnier
+sunning
+sunny
+sunrise
+suns
+sunset
+sunsets
+sup
+super
+superb
+supered
+supper
+suppers
+supple
+suppled
+suppler
+supply
+support
+suppose
+supreme
+sure
+sured
+surely
+surer
+surest
+surety
+surf
+surface
+surfer
+surfers
+surfing
+surge
+surged
+surgely
+surgeon
+surgery
+surges
+surging
+surlier
+surly
+surmise
+surname
+surpass
+surplus
+survey
+surveys
+survive
+suspect
+suspend
+sustain
+suture
+sutured
+sutures
+swagger
+swain
+swains
+swallow
+swam
+swamp
+swamped
+swamper
+swamps
+swampy
+swan
+swans
+swap
+swapped
+swapper
+swaps
+swarm
+swarmed
+swarmer
+swarms
+swarthy
+swatted
+sway
+swayed
+swayer
+swaying
+sways
+swear
+swearer
+swears
+sweat
+sweated
+sweater
+sweats
+sweep
+sweeper
+sweeps
+sweet
+sweeten
+sweeter
+sweetie
+sweetly
+sweets
+swell
+swelled
+swells
+swept
+swerve
+swerved
+swerves
+swift
+swifter
+swiftly
+swim
+swimmer
+swims
+swine
+swing
+swinger
+swings
+swipe
+swiped
+swipes
+swiping
+swirl
+swirled
+swirler
+swirls
+swish
+swished
+swisher
+switch
+swollen
+swoon
+swooned
+swooner
+swoons
+swoop
+swooped
+swooper
+swoops
+sword
+swords
+swore
+sworn
+swum
+swung
+syllabi
+symbol
+symbols
+symptom
+synapse
+synonym
+syntax
+syringe
+syrup
+system
+systems
+tab
+table
+tableau
+tabled
+tables
+tablet
+tablets
+tabling
+taboo
+taboos
+tabs
+tabular
+tacit
+tacitly
+tack
+tacked
+tacker
+tacking
+tackle
+tackled
+tackler
+tackles
+tacks
+tact
+tactics
+tactile
+tag
+tagged
+tagging
+tags
+tail
+tailed
+tailer
+tailing
+tailor
+tailors
+tails
+taint
+tainted
+taints
+take
+taken
+taker
+takers
+takes
+taketh
+taking
+takings
+tale
+talent
+talents
+taler
+tales
+talion
+talk
+talked
+talker
+talkers
+talkie
+talking
+talks
+tall
+taller
+tallest
+tallow
+tame
+tamed
+tamely
+tamer
+tames
+tamest
+taming
+tamper
+tampers
+tan
+tandem
+tang
+tanged
+tangent
+tangier
+tangle
+tangled
+tangles
+tangly
+tangy
+tank
+tanked
+tanker
+tankers
+tanking
+tanks
+tanner
+tanners
+tans
+tantrum
+tap
+tape
+taped
+taper
+tapered
+taperer
+tapers
+tapes
+taping
+tapings
+tapped
+tapper
+tappers
+tapping
+taproot
+taps
+tar
+tardier
+tardies
+tardy
+target
+targets
+tariff
+tariffs
+taring
+tarried
+tarries
+tarry
+tars
+tart
+tartly
+tarts
+task
+tasked
+tasking
+tasks
+taste
+tasted
+taster
+tasters
+tastes
+tasting
+tatter
+tattoo
+tattoos
+tau
+taught
+taunt
+taunted
+taunter
+taunts
+taut
+tauten
+tautly
+tavern
+taverns
+tawnier
+tawnies
+tawny
+tax
+taxable
+taxed
+taxer
+taxes
+taxi
+taxicab
+taxied
+taxiing
+taxing
+taxis
+tea
+teach
+teacher
+teaches
+team
+teamed
+teaming
+teams
+tear
+teared
+tearer
+tearful
+tearing
+tears
+teas
+tease
+teased
+teaser
+teases
+teasing
+tedious
+tedium
+teem
+teemed
+teeming
+teems
+teen
+teenage
+teener
+teens
+teeth
+teethe
+teethed
+teether
+teethes
+tell
+teller
+tellers
+telling
+tells
+temper
+tempers
+tempest
+temple
+templed
+temples
+tempt
+tempted
+tempter
+tempts
+ten
+tenant
+tenants
+tend
+tended
+tender
+tenders
+tending
+tends
+tennis
+tenor
+tenors
+tens
+tense
+tensed
+tensely
+tenser
+tenses
+tensest
+tensing
+tension
+tensive
+tensor
+tensors
+tent
+tented
+tenter
+tenth
+tenthes
+tenting
+tents
+tenure
+tenured
+tenures
+tequila
+term
+termcap
+termed
+termer
+terming
+termly
+terms
+ternary
+terrace
+terrain
+terrier
+terrify
+terror
+terrors
+test
+tested
+tester
+testers
+testify
+testing
+tests
+text
+textile
+texts
+textual
+texture
+than
+thank
+thanked
+thanker
+thanks
+that
+thatch
+thats
+thaw
+thawed
+thawing
+thaws
+the
+theft
+thefts
+their
+theirs
+them
+theme
+themes
+then
+thence
+theorem
+theory
+therapy
+there
+thereby
+therein
+thereof
+thereon
+thereto
+these
+theses
+thesis
+they
+thick
+thicken
+thicker
+thicket
+thickly
+thicks
+thief
+thieve
+thieves
+thigh
+thighed
+thighs
+thimble
+thin
+thiner
+thinest
+thing
+things
+think
+thinker
+thinks
+thinly
+thinner
+thins
+third
+thirdly
+thirds
+thirst
+thirsts
+thirsty
+thirty
+this
+thistle
+thong
+thonged
+thorn
+thorns
+thorny
+those
+though
+thought
+thrash
+thread
+threads
+threat
+threats
+three
+threes
+threw
+thrice
+thrift
+thrifty
+thrill
+thrills
+thrive
+thrived
+thriver
+thrives
+throat
+throats
+throb
+throbs
+throne
+thrones
+throng
+throngs
+through
+throw
+thrower
+thrown
+throws
+thrush
+thrust
+thrusts
+thud
+thuds
+thug
+thugs
+thumb
+thumbed
+thumbs
+thump
+thumped
+thumper
+thumps
+thunder
+thus
+thusly
+thwart
+thwarts
+thyself
+tick
+ticked
+ticker
+tickers
+ticket
+tickets
+ticking
+tickle
+tickled
+tickler
+tickles
+ticks
+tidal
+tidally
+tide
+tided
+tides
+tidied
+tidier
+tidies
+tiding
+tidings
+tidy
+tidying
+tie
+tied
+tier
+tiered
+tiers
+ties
+tiger
+tigers
+tight
+tighten
+tighter
+tightly
+tights
+tilde
+tildes
+tile
+tiled
+tiler
+tiles
+tiling
+till
+tilled
+tiller
+tillers
+tilling
+tills
+tilt
+tilted
+tilter
+tilters
+tilting
+tilts
+timber
+timbers
+time
+timed
+timely
+timeout
+timer
+timers
+times
+timid
+timidly
+timing
+timings
+tin
+tinge
+tinged
+tinging
+tingle
+tingled
+tingles
+tinier
+tiniest
+tinily
+tinker
+tinkers
+tinkle
+tinkled
+tinkles
+tinned
+tinnier
+tinnily
+tinning
+tinny
+tins
+tint
+tinted
+tinter
+tinting
+tints
+tiny
+tip
+tipped
+tipper
+tippers
+tipping
+tips
+tiptoe
+tiptoed
+tire
+tired
+tiredly
+tires
+tiring
+tissue
+tissued
+tissues
+tit
+tithe
+tither
+tithes
+tithing
+title
+titled
+titles
+titling
+tits
+titter
+titters
+tizzies
+tizzy
+to
+toad
+toads
+toast
+toasted
+toaster
+toasts
+toasty
+tobacco
+today
+todays
+toe
+toed
+toes
+toggle
+toggled
+toggles
+toil
+toiled
+toiler
+toilet
+toilets
+toiling
+toils
+token
+tokens
+told
+toll
+tolled
+tolling
+tolls
+tom
+tomato
+tomb
+tombs
+toms
+ton
+tone
+toned
+toner
+tones
+tongs
+tongue
+tongued
+tongues
+tonic
+tonics
+tonight
+toning
+tonnage
+tons
+tonsil
+too
+took
+tool
+tooled
+tooler
+toolers
+tooling
+toolkit
+tools
+tooth
+toothed
+top
+toped
+toper
+topic
+topical
+topics
+toping
+topmost
+topple
+toppled
+topples
+tops
+torch
+torches
+tore
+torment
+torn
+tornado
+torpedo
+torque
+torquer
+torques
+torrent
+torrid
+torture
+torus
+toruses
+toss
+tossed
+tosser
+tosses
+tossing
+total
+totally
+totals
+totter
+totters
+touch
+touched
+toucher
+touches
+touchy
+tough
+toughen
+tougher
+toughly
+tour
+toured
+tourer
+touring
+tourist
+tours
+tow
+toward
+towards
+towed
+towel
+towels
+tower
+towered
+towers
+towing
+town
+towner
+towns
+tows
+toxin
+toxins
+toy
+toyed
+toyer
+toying
+toys
+trace
+traced
+tracer
+tracers
+traces
+tracing
+track
+tracked
+tracker
+tracks
+tract
+tractor
+tracts
+trade
+traded
+trader
+traders
+trades
+trading
+traffic
+tragedy
+tragic
+trail
+trailed
+trailer
+trails
+train
+trained
+trainee
+trainer
+trains
+trait
+traitor
+traits
+tramp
+tramped
+tramper
+trample
+tramps
+trance
+trances
+transit
+trap
+trapped
+trapper
+traps
+trash
+trashed
+trasher
+trashes
+travail
+travel
+travels
+tray
+trays
+tread
+treaded
+treader
+treads
+treason
+treat
+treated
+treater
+treats
+treaty
+treble
+trebled
+trebles
+tree
+treed
+trees
+treetop
+trek
+treks
+tremble
+tremor
+tremors
+trench
+trend
+trends
+tress
+tressed
+tresses
+trial
+trials
+tribal
+tribe
+tribes
+tribune
+tribute
+trick
+tricked
+tricker
+trickle
+tricks
+tricky
+tried
+trier
+triers
+tries
+trifle
+trifled
+trifler
+trifles
+trigger
+trill
+trilled
+triller
+trim
+trimer
+trimly
+trimmed
+trimmer
+trims
+trinket
+trip
+triple
+tripled
+triples
+triplet
+triply
+trips
+triumph
+trivia
+trivial
+trod
+troff
+troffer
+troll
+trolley
+trolls
+troop
+trooped
+trooper
+troops
+trophy
+tropic
+tropics
+trot
+trots
+trouble
+trough
+trouser
+trout
+trouts
+trowel
+trowels
+truant
+truants
+truce
+trucing
+truck
+trucked
+trucker
+trucks
+trudge
+trudged
+trudger
+trudges
+true
+trued
+truer
+trues
+truest
+truing
+truism
+truisms
+truly
+trump
+trumped
+trumpet
+trumps
+trunk
+trunked
+trunks
+trust
+trusted
+trustee
+truster
+trusts
+trusty
+truth
+truths
+try
+trying
+tty
+ttys
+tub
+tube
+tubed
+tuber
+tubers
+tubes
+tubing
+tubs
+tuck
+tucked
+tucker
+tucking
+tucks
+tuft
+tufted
+tufter
+tufts
+tug
+tugs
+tuition
+tulip
+tulips
+tumble
+tumbled
+tumbler
+tumbles
+tumult
+tumults
+tunable
+tune
+tuned
+tuner
+tuners
+tunes
+tunic
+tunics
+tuning
+tunings
+tunnel
+tunnels
+tuple
+tuples
+turban
+turbans
+turf
+turkey
+turkeys
+turmoil
+turn
+turned
+turner
+turners
+turning
+turnip
+turnips
+turnkey
+turns
+turret
+turrets
+turtle
+turtles
+tutor
+tutored
+tutors
+twain
+twang
+twas
+tweak
+tweaked
+tweaker
+tweaks
+tweed
+tweezer
+twelfth
+twelve
+twelves
+twenty
+twice
+twig
+twigs
+twill
+twilled
+twin
+twine
+twined
+twiner
+twines
+twining
+twinkle
+twins
+twirl
+twirled
+twirler
+twirls
+twist
+twisted
+twister
+twists
+twitch
+twitter
+two
+twofold
+twos
+tying
+type
+typed
+typedef
+typer
+types
+typhoid
+typical
+typify
+typing
+typist
+typists
+typos
+tyranny
+tyrant
+tyrants
+ugh
+uglier
+ugliest
+ugly
+ulcer
+ulcered
+ulcers
+umpire
+umpired
+umpires
+unable
+unaided
+unapt
+unaptly
+unarmed
+unary
+unasked
+unaware
+unbans
+unbated
+unblock
+unblown
+unboned
+unborn
+unbound
+unbowed
+unbred
+unbuilt
+uncaged
+uncanny
+uncared
+uncivil
+uncle
+unclean
+unclear
+uncles
+uncoded
+uncool
+uncouth
+uncover
+uncured
+under
+undergo
+underly
+undid
+undies
+undo
+undoer
+undoes
+undoing
+undone
+undress
+undried
+undue
+unduly
+undying
+uneasy
+unequal
+uneven
+unfair
+unfaith
+unfired
+unfit
+unfitly
+unfixed
+unfold
+unfolds
+ungirt
+unglued
+ungot
+unhappy
+unheard
+unhelm
+unhooks
+unhoped
+unicorn
+unified
+unifier
+unifies
+uniform
+unify
+union
+unions
+unique
+unison
+unit
+unite
+united
+uniter
+unites
+unities
+uniting
+unitive
+units
+unity
+unjam
+unjust
+unkind
+unknit
+unknown
+unlaced
+unleash
+unless
+unlike
+unlined
+unlink
+unlinks
+unload
+unloads
+unlock
+unlocks
+unloved
+unlucky
+unmade
+unmaps
+unmated
+unmates
+unmeant
+unmixed
+unmount
+unmoved
+unnamed
+unnerve
+unpack
+unpacks
+unpaged
+unpaid
+unpaved
+unplugs
+unrated
+unravel
+unread
+unreal
+unrest
+unroll
+unrolls
+unruled
+unruly
+unsafe
+unsaid
+unsaved
+unseals
+unseen
+unsent
+unshod
+unsized
+unslung
+unsnap
+unsnaps
+unsound
+unspent
+unstuck
+unsung
+unsure
+untamed
+untaped
+untidy
+untie
+untied
+unties
+until
+unto
+untold
+untried
+untrod
+untrue
+untruly
+untruth
+untying
+untyped
+unused
+unusual
+unveil
+unveils
+unwaged
+unwept
+unwind
+unwinds
+unwired
+unwise
+unwiser
+unworn
+unwound
+unwoven
+unwrap
+unwraps
+up
+upbraid
+update
+updated
+updater
+updates
+upfield
+upgrade
+upheld
+uphill
+uphold
+upholds
+upkeep
+upland
+uplands
+uplift
+uplifts
+upload
+uploads
+upon
+upper
+uppers
+upright
+uproar
+uproot
+uproots
+ups
+upset
+upsets
+upshot
+upshots
+upside
+upsides
+upturn
+upturns
+upward
+upwards
+urban
+urchin
+urchins
+urge
+urged
+urgent
+urger
+urges
+urging
+urgings
+urinate
+urine
+urn
+urning
+urns
+us
+usable
+usably
+usage
+usages
+use
+used
+useful
+useless
+user
+users
+uses
+usher
+ushered
+ushers
+using
+usual
+usually
+usurp
+usurped
+usurper
+utensil
+utility
+utmost
+utopian
+utter
+uttered
+utterer
+utterly
+utters
+uucp
+vacancy
+vacant
+vacate
+vacated
+vacates
+vacuo
+vacuous
+vacuum
+vacuums
+vagary
+vagina
+vaginas
+vagrant
+vague
+vaguely
+vaguer
+vaguest
+vainly
+vale
+valence
+vales
+valet
+valets
+valiant
+valid
+validly
+valley
+valleys
+value
+valued
+valuer
+valuers
+values
+valuing
+valve
+valved
+valves
+valving
+van
+vane
+vaned
+vanes
+vanilla
+vanish
+vanity
+vans
+vantage
+variant
+varied
+varier
+varies
+variety
+various
+varnish
+vary
+varying
+vase
+vases
+vassal
+vassals
+vast
+vaster
+vastest
+vastly
+vat
+vats
+vault
+vaulted
+vaulter
+vaults
+vaunt
+vaunted
+vaunter
+veal
+vealer
+vealing
+vector
+vectors
+veer
+veered
+veering
+veers
+vehicle
+veil
+veiled
+veiling
+veils
+vein
+veined
+veiner
+veining
+veins
+velvet
+vend
+vender
+vending
+vendor
+vendors
+venison
+venom
+vent
+vented
+venter
+venting
+ventral
+vents
+venture
+veranda
+verb
+verbal
+verbose
+verbs
+verdict
+verdure
+verge
+verger
+verges
+verier
+veriest
+verify
+verily
+vermin
+versa
+verse
+versed
+verser
+verses
+versing
+version
+versus
+vertex
+very
+vessel
+vessels
+vest
+vested
+vestige
+vesting
+vests
+veteran
+veto
+vetoed
+vetoer
+vetoes
+vetoing
+vetting
+vex
+vexed
+vexedly
+vexes
+vexing
+vi
+via
+viable
+viably
+vial
+vials
+vibrate
+vice
+viceroy
+vices
+vicing
+vicious
+victim
+victims
+victor
+victors
+victory
+victual
+video
+videos
+vie
+vied
+vier
+vies
+view
+viewed
+viewer
+viewers
+viewing
+views
+vile
+vilely
+viler
+vilest
+vilify
+villa
+village
+villain
+villas
+vine
+vinegar
+vines
+vining
+vintage
+violate
+violent
+violet
+violets
+violin
+violins
+viper
+vipers
+viral
+virally
+virgin
+virgins
+virtual
+virtue
+virtues
+virus
+viruses
+vis
+visa
+visaed
+visage
+visaged
+visaing
+visas
+viscous
+visible
+visibly
+vision
+visions
+visit
+visited
+visitor
+visits
+visor
+visored
+visors
+vista
+vistaed
+vistas
+visual
+visuals
+vita
+vitae
+vital
+vitally
+vitals
+vitamin
+vivid
+vividly
+vizier
+vocal
+vocally
+vocals
+vogue
+voice
+voiced
+voicer
+voicers
+voices
+voicing
+void
+voided
+voider
+voiding
+voids
+volcano
+volley
+volleys
+volt
+voltage
+volts
+volume
+volumed
+volumes
+vomit
+vomited
+vomiter
+vomits
+vortex
+vote
+voted
+voter
+voters
+votes
+voting
+votive
+vouch
+voucher
+vouches
+vow
+vowed
+vowel
+vowels
+vower
+vowing
+vows
+voyage
+voyaged
+voyager
+voyages
+vulgar
+vulture
+wade
+waded
+wader
+waders
+wades
+wading
+wafer
+wafered
+wafers
+waffle
+waffled
+waffles
+waft
+wafter
+wag
+wage
+waged
+wager
+wagered
+wagerer
+wagers
+wages
+waging
+wagon
+wagons
+wags
+wail
+wailed
+wailer
+wailing
+wails
+waist
+waisted
+waister
+waists
+wait
+waited
+waiter
+waiters
+waiting
+waits
+waive
+waived
+waiver
+waivers
+waives
+waiving
+wake
+waked
+waken
+wakened
+wakener
+waker
+wakes
+waking
+walk
+walked
+walker
+walkers
+walking
+walks
+walkway
+wall
+walled
+waller
+wallet
+wallets
+walling
+wallow
+wallows
+walls
+walnut
+walnuts
+walrus
+waltz
+waltzed
+waltzer
+waltzes
+wan
+wand
+wander
+wanders
+wane
+waned
+wanes
+waning
+wanly
+wanness
+want
+wanted
+wanter
+wanting
+wanton
+wants
+war
+warble
+warbled
+warbler
+warbles
+ward
+warded
+warden
+wardens
+warder
+warding
+wards
+ware
+wares
+warfare
+warier
+wariest
+warily
+waring
+warlike
+warm
+warmed
+warmer
+warmers
+warmest
+warming
+warmly
+warms
+warmth
+warn
+warned
+warner
+warning
+warns
+warp
+warped
+warper
+warping
+warps
+warrant
+warred
+warring
+warrior
+wars
+warship
+wart
+warted
+warts
+wary
+was
+wash
+washed
+washer
+washers
+washes
+washing
+wasp
+wasps
+waste
+wasted
+waster
+wastes
+wasting
+watch
+watched
+watcher
+watches
+water
+watered
+waterer
+waters
+watery
+wave
+waved
+waver
+wavered
+waverer
+wavers
+waves
+waving
+wax
+waxed
+waxen
+waxer
+waxers
+waxes
+waxier
+waxing
+waxy
+way
+ways
+wayside
+wayward
+we
+weak
+weaken
+weakens
+weaker
+weakest
+weakly
+wealth
+wealths
+wealthy
+wean
+weaned
+weaner
+weaning
+weapon
+weapons
+wear
+wearer
+wearied
+wearier
+wearies
+wearily
+wearing
+wears
+weary
+weasel
+weasels
+weather
+weave
+weaver
+weavers
+weaves
+weaving
+web
+weber
+webs
+wed
+wedded
+wedding
+wedge
+wedged
+wedges
+wedging
+weds
+wee
+weed
+weeded
+weeder
+weeding
+weeds
+week
+weekday
+weekend
+weekly
+weeks
+weep
+weeped
+weeper
+weepers
+weeping
+weeps
+weigh
+weighed
+weigher
+weighs
+weight
+weights
+weird
+weirdly
+welcome
+weld
+welded
+welder
+welders
+welding
+welds
+welfare
+well
+welled
+welling
+wells
+wench
+wencher
+wenches
+went
+wept
+were
+west
+wester
+western
+westing
+wet
+wetly
+wetness
+wets
+wetted
+wetter
+wettest
+wetting
+whack
+whacked
+whacker
+whacks
+whale
+whaler
+whales
+whaling
+whammy
+wharf
+wharfs
+wharves
+what
+wheat
+wheaten
+wheel
+wheeled
+wheeler
+wheels
+whelp
+when
+whence
+whens
+where
+whereas
+whereby
+wherein
+whether
+whew
+whey
+which
+while
+whiled
+whiles
+whiling
+whim
+whimper
+whims
+whimsy
+whine
+whined
+whiner
+whines
+whining
+whip
+whipped
+whipper
+whips
+whirl
+whirled
+whirler
+whirls
+whirr
+whisk
+whisked
+whisker
+whiskey
+whisks
+whisper
+whistle
+whit
+white
+whited
+whitely
+whiten
+whitens
+whiter
+whites
+whitest
+whiting
+whittle
+whiz
+whizzed
+whizzes
+who
+whoever
+whole
+wholes
+wholly
+whom
+whoop
+whooped
+whooper
+whoops
+whore
+whores
+whoring
+whorl
+whorled
+whorls
+whose
+why
+wick
+wicked
+wicker
+wicking
+wicks
+wide
+widely
+widen
+widened
+widener
+widens
+wider
+widest
+widget
+widgets
+widow
+widowed
+widower
+widows
+width
+widths
+wield
+wielded
+wielder
+wields
+wife
+wifely
+wig
+wigs
+wigwam
+wild
+wildcat
+wilder
+wildest
+wilding
+wildly
+wile
+wiled
+wiles
+wilier
+wiling
+will
+willed
+willer
+willful
+willing
+willow
+willows
+wills
+wilt
+wilted
+wilting
+wilts
+wily
+win
+wince
+winced
+winces
+wincing
+wind
+winded
+winder
+winders
+windier
+winding
+window
+windows
+winds
+windy
+wine
+wined
+winer
+winers
+wines
+wing
+winged
+winger
+wingers
+winging
+wings
+wining
+wink
+winked
+winker
+winking
+winks
+winner
+winners
+winning
+wins
+winter
+winters
+wintry
+wipe
+wiped
+wiper
+wipers
+wipes
+wiping
+wire
+wired
+wirer
+wires
+wiretap
+wirier
+wiring
+wirings
+wiry
+wisdom
+wisdoms
+wise
+wised
+wisely
+wiser
+wises
+wisest
+wish
+wished
+wisher
+wishers
+wishes
+wishful
+wishing
+wising
+wisp
+wisps
+wistful
+wit
+witch
+witches
+with
+withal
+wither
+withers
+within
+without
+witness
+wits
+wittier
+witty
+wives
+wizard
+wizards
+woe
+woeful
+woeness
+woke
+wolf
+wolfer
+wolves
+woman
+womanly
+womb
+wombed
+wombs
+women
+womens
+wonder
+wonders
+wont
+wonted
+wonting
+woo
+wood
+wooded
+wooden
+woodier
+wooding
+woodman
+woods
+woodser
+woody
+wooed
+wooer
+woof
+woofed
+woofer
+woofers
+woofing
+woofs
+wooing
+wool
+wooled
+woolen
+woolens
+woolly
+wools
+wooly
+woos
+word
+worded
+wordier
+wordily
+wording
+words
+wordy
+wore
+work
+worked
+worker
+workers
+working
+workman
+workmen
+works
+world
+worldly
+worlds
+worm
+wormed
+wormer
+worming
+worms
+worn
+worried
+worrier
+worries
+worry
+worse
+worser
+worship
+worst
+worsted
+worth
+worths
+worthy
+would
+wound
+wounded
+wounds
+wove
+woven
+wrangle
+wrap
+wrapped
+wrapper
+wraps
+wrath
+wreak
+wreaks
+wreath
+wreck
+wrecked
+wrecker
+wrecks
+wren
+wrench
+wrens
+wrest
+wrested
+wrester
+wrestle
+wrests
+wretch
+wriggle
+wring
+wringer
+wrings
+wrinkle
+wrist
+wrists
+writ
+write
+writer
+writers
+writes
+writhe
+writhed
+writhes
+writing
+writs
+written
+wrong
+wronged
+wronger
+wrongly
+wrongs
+wrote
+wrought
+wrung
+yank
+yanked
+yanking
+yanks
+yard
+yarded
+yarding
+yards
+yarn
+yarned
+yarning
+yarns
+yawn
+yawner
+yawning
+yawns
+yea
+yeah
+year
+yearly
+yearn
+yearned
+yearner
+yearns
+years
+yeas
+yeast
+yeasts
+yecch
+yell
+yelled
+yeller
+yelling
+yellow
+yellows
+yells
+yelp
+yelped
+yelper
+yelping
+yelps
+yeoman
+yeomen
+yes
+yeses
+yet
+yield
+yielded
+yielder
+yields
+yoke
+yokes
+yoking
+yon
+yonder
+you
+young
+younger
+youngly
+your
+yours
+youth
+youthes
+yuck
+yummier
+yummy
+yuppie
+yuppies
+zap
+zapped
+zapping
+zaps
+zeal
+zealous
+zebra
+zebras
+zenith
+zero
+zeroed
+zeroes
+zeroing
+zeros
+zeroth
+zest
+zigzag
+zinc
+zodiac
+zodiacs
+zonal
+zonally
+zone
+zoned
+zonely
+zoner
+zones
+zoning
+zoo
+zoom
+zoomed
+zooming
+zooms
+zoos