private void btnHamming_Click(object sender, EventArgs e)
        {
            clearAll();
            if ((rtbData.Text == "") || (txtInput.Text == "") || (insertDistance.Text == ""))
            {
                this.errorProviderH.SetError(btnHamming, "Одно из полей пустое");
            }
            else
            {
                Stopwatch stopWatch = new Stopwatch();
                stopWatch.Start();
                List <string> allCloseWords = new List <string>();
                string        checker       = txtInput.Text.ToString();
                string        editLines     = rtbData.Text.ToString();
                int           maxDist       = Convert.ToInt32(insertDistance.Text.ToString());
                string        checkFromRTF  = "";
                int           minDist       = Int32.MaxValue;
                string        closestWord   = "";
                int           i             = 0;
                int           length        = editLines.Length;
                while (i < length)
                {
                    checkFromRTF = "";
                    while ((i < length) && (!checkIfNeededChar(editLines[i])))
                    {
                        i++;
                    }
                    while ((i < length) && (checkIfNeededChar(editLines[i])))
                    {
                        checkFromRTF += editLines[i];
                        i++;
                    }
                    int checkDist = Metricas.GetHammingDistance(checker, checkFromRTF);
                    if (checkDist != -1)
                    {
                        int checkDist1 = Metricas.GetHammingDistance(checker, checkFromRTF.ToLower());
                        if (checkDist1 == minDist)
                        {
                            allCloseWords.Add(checkFromRTF);
                        }
                        else if (checkDist1 < minDist)
                        {
                            allCloseWords.Clear();
                            allCloseWords.Add(checkFromRTF);
                            minDist     = checkDist1;
                            closestWord = checkFromRTF;
                        }
                        if (checkDist <= maxDist)
                        {
                            int index;
                            if (checkDotOrComma(editLines[i - 1]))
                            {
                                index = i - checkFromRTF.Length - 1;
                            }
                            else
                            {
                                index = i - checkFromRTF.Length;
                            }
                            rtbData.Select(index, checkFromRTF.Length);
                            rtbData.SelectionColor = Color.Red;
                        }
                    }
                }
                if (closestWord == "")
                {
                    lblMaybeYouSearched.Text = "Возможно вы искали: нет подходящих результатов";
                }
                else
                {
                    lblMaybeYouSearched.Text = "Возможно вы искали: " + closestWord + "?";
                }

                stopWatch.Stop();
                TimeSpan ts          = stopWatch.Elapsed;
                string   elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
                                                     ts.Hours, ts.Minutes, ts.Seconds,
                                                     ts.Milliseconds);
                txtElapsedTime.Text = elapsedTime;
                int cnt = 0;
                foreach (string str in allCloseWords)
                {
                    if (str == closestWord)
                    {
                        cnt++;
                    }
                }
                if (allCloseWords.Count == 0)
                {
                    txtPercent.Text = Convert.ToString(0);
                }
                else
                {
                    txtPercent.Text = Convert.ToString((Convert.ToDouble(cnt) / Convert.ToDouble(allCloseWords.Count)) * 100.0);
                }
            }
        }