diff --git a/.gitignore b/.gitignore index c7b06dfe..821ae0b7 100644 --- a/.gitignore +++ b/.gitignore @@ -135,5 +135,6 @@ dmypy.json *.html .idea/ drafts/ -.virtual_documents -.zed +.virtual_documents/ +.zed/ +.ruff_cache/ diff --git a/00_index.ipynb b/00_index.ipynb index 1705e4ee..bd941b6c 100644 --- a/00_index.ipynb +++ b/00_index.ipynb @@ -35,6 +35,7 @@ "# Hands-On Projects\n", "\n", "- [Image Classification](./31_image_classification.ipynb)\n", + "- [Language Modeling (part 1)](./32_language_modeling_1.ipynb)\n", "\n", "# Additional Topics\n", "\n", @@ -58,7 +59,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.10" + "version": "3.12.10" } }, "nbformat": 4, diff --git a/24_library_pandas.ipynb b/24_library_pandas.ipynb index e929b6cf..2ccef569 100644 --- a/24_library_pandas.ipynb +++ b/24_library_pandas.ipynb @@ -4930,6 +4930,9 @@ } ], "metadata": { + "jupytext": { + "formats": "ipynb,auto:percent" + }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", @@ -4945,7 +4948,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.0" + "version": "3.12.10" } }, "nbformat": 4, diff --git a/32_language_modeling_1.ipynb b/32_language_modeling_1.ipynb new file mode 100644 index 00000000..d93a6c38 --- /dev/null +++ b/32_language_modeling_1.ipynb @@ -0,0 +1,1956 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0", + "metadata": {}, + "source": [ + "# Language Modeling With PyTorch\n", + "\n", + "## Part 1" + ] + }, + { + "cell_type": "markdown", + "id": "1", + "metadata": {}, + "source": [ + "## Table of Contents\n", + "- [Introduction](#Introduction)\n", + "- [References](#References)\n", + "- [Inspecting the data](#Inspecting-the-data)\n", + "- [Bigram language model](#Bigram-language-model)\n", + " - [Evaluating the quality of the model](#Evaluating-the-quality-of-the-model)\n", + "- [A neural network approach](#A-neural-network-approach)\n", + " - [The training set](#The-training-set)\n", + " - [Feeding the network](#Feeding-the-network)\n", + " - [Regaining a normal distribution](#Regaining-a-normal-distribution)\n", + " - [Recap: How the Neural Network Processes Input Characters](#Recap:-How-the-Neural-Network-Processes-Input-Characters)\n", + " - [Optimization](#Optimization)\n", + " - [Putting it all together](#Putting-it-all-together)\n", + " - [Preparing data](#Preparing-data)\n", + " - [Initializing the neural network](#Initializing-the-neural-network)\n", + " - [Training the neural network](#Training-the-neural-network)\n", + " - [Comparison with a Bigram frequency model](#Comparison-with-a-Bigram-frequency-model)\n", + " - [Smoothing applied to a neural network](#Smoothing-applied-to-a-neural-network)\n", + " - [Sampling from our trained model](#Sampling-from-our-trained-model)\n", + " - [Conclusion](#Conclusion)\n", + "- [Exercises](#Exercises)\n", + " - [1. Build a Trigram model](#1.-Build-a-Trigram-model)\n", + " - [2. Split the dataset](#2.-Split-the-dataset)\n", + " - [Bigram model baseline](#Bigram-model-baseline)\n", + " - [Compare the Bigram and Trigram model](#Compare-the-Bigram-and-Trigram-model)\n", + " - [3. Change the loss function](#3.-Change-the-loss-function)" + ] + }, + { + "cell_type": "markdown", + "id": "2", + "metadata": {}, + "source": [ + "## Introduction\n", + "\n", + "The purpose of this multi-part notebook is to give a gentle introduction to the PyTorch library, with a focus on language modeling.\n", + "At high-level, we will build a progressively more complex **character-level language model** that can generate more text similar to the training data.\n", + "\n", + "The final result is not meant to be a \"production-ready\" language model, but rather a simple yet effective example of how to use PyTorch for language modeling.\n", + "Along the way, we will learn the fundamental building blocks that lay the groundwork for more complex models, including the base models that power the state-of-the-art LLMs and derived products, like our friendly and always helpful assistant ChatGPT.\n", + "\n", + "The final implementation will allow you to experiment with different models, starting from the most simple and basic one (a **bigram** model, where one character predicts the next one with a lookup table of counts) to a more complex **RNN** and finally a **Transformer** model.\n" + ] + }, + { + "cell_type": "markdown", + "id": "3", + "metadata": {}, + "source": [ + "## References\n", + "\n", + "Some literature references about the concepts touched by one or more parts of this tutorial: \n", + "\n", + "- Multi-Layer Perceptron (MLP): [Bengio et al. 2003](https://www.jmlr.org/papers/volume3/bengio03a/bengio03a.pdf)\n", + "- Convolutional Neural Network (CNN): [DeepMind WaveNet 2016](https://arxiv.org/abs/1609.03499)\n", + "- Recurrent Neural Network (RNN): [Mikolov et al. 2010](https://www.fit.vutbr.cz/research/groups/speech/publi/2010/mikolov_interspeech2010_IS100722.pdf)\n", + "- Long Short-Term Memory (LSTM): [Graves et al. 2014](https://arxiv.org/abs/1308.0850)\n", + "- Gated Recurrent Unit (GRU): [Kyunghyun Cho et al. 2014](https://arxiv.org/abs/1409.1259)\n", + "- Transformer: [Vaswani et al. 2017](https://arxiv.org/abs/1706.03762)\n", + "\n", + "A few more related resource (hands-on, tutorial, articles, videos, etc.):\n", + "- Book \"[Build a Large Language Model (From Scratch)](http://mng.bz/orYv)\" by Sebastian Raschka (the companion [GitHub repository](https://github.com/rasbt/LLMs-from-scratch))\n", + "- [Andrej Karpathy's \"Neural Net: From Zero to Hero\"](https://www.youtube.com/playlist?list=PLAqhIrjkxbuWI23v9cThsA9GvCAUhRvKZ) (*This was the **main** inspiration for this and the subsequent notebooks*)\n", + "- A [tutorial](https://docs.fast.ai/tutorial.text.html) on *transfer learning* by fastai\n", + "- [Hugging Face's FineWeb dataset](https://huggingface.co/spaces/HuggingFaceFW/blogpost-fineweb-v1)\n", + "- [Transformer LLM 3D visualizer](https://bbycroft.net/llm)" + ] + }, + { + "cell_type": "markdown", + "id": "4", + "metadata": {}, + "source": [ + "## Inspecting the data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5", + "metadata": {}, + "outputs": [], + "source": [ + "import pathlib as pl" + ] + }, + { + "cell_type": "markdown", + "id": "6", + "metadata": {}, + "source": [ + "Our initial dataset is a simple list of strings that represent common names:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7", + "metadata": {}, + "outputs": [], + "source": [ + "words = pl.Path(\"data/lm/names.txt\").read_text().splitlines()\n", + "words[:10]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8", + "metadata": {}, + "outputs": [], + "source": [ + "len(words), min(len(w) for w in words), max(len(w) for w in words)" + ] + }, + { + "cell_type": "markdown", + "id": "9", + "metadata": {}, + "source": [ + "The information we can extract from a single name, e.g. `isabella`, is multiple:\n", + "\n", + "- We know that the character `i` is followed by `s`.\n", + "- We know that, after the characters `isabell`, the following character is `a`.\n", + "- We know that, after the characters `isabella`, the following character is `\\n` (end of string).\n", + "\n", + "The idea is that a single word packs multiple pieces of information regarding the statistical structure of the language it belongs to.\n", + "And since we have about 32k words, there's quite a lot of information we can use to train even a simple language model." + ] + }, + { + "cell_type": "markdown", + "id": "10", + "metadata": {}, + "source": [ + "## Bigram language model" + ] + }, + { + "cell_type": "markdown", + "id": "11", + "metadata": {}, + "source": [ + "A bigram language model is the simplest possible language model.\n", + "Given a sequence of characters (each character is usually referred to as a **token**), the bigram language model assigns a probability to each possible next token, given the previous token.\n", + "It's a predictor for each pair of tokens." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "12", + "metadata": {}, + "outputs": [], + "source": [ + "for w in words[:3]:\n", + " for ch1, ch2 in zip(w, w[1:]):\n", + " print(ch1, ch2)" + ] + }, + { + "cell_type": "markdown", + "id": "13", + "metadata": {}, + "source": [ + "The most basic modeling of the statistical patterns embedded in our input data is predicting the next token **by frequency**.\n", + "We can build a simple dictionary that counts how many times a bigram (i.e., sequence of two tokens) appear in our dataset.\n", + "\n", + "We also need to add the *special* information about the start and end of the sequence.\n", + "We can \"encode\" that information with two **special tokens**: `` (start) and `` (end)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "14", + "metadata": {}, + "outputs": [], + "source": [ + "from collections import defaultdict\n", + "\n", + "bigrams = defaultdict(int)\n", + "\n", + "for w in words:\n", + " chars = [\"\"] + list(w) + [\"\"]\n", + " for ch1, ch2 in zip(chars, chars[1:]):\n", + " bigrams[(ch1, ch2)] += 1\n", + "\n", + "print(dict(bigrams))" + ] + }, + { + "cell_type": "markdown", + "id": "15", + "metadata": {}, + "source": [ + "What does an entry of the bigram dictionary look like?\n", + "It's something like `('a', ''): 6640`, which means: the bigram `('a', '')` occurred 6640 times.\n", + "That is: the letter `a` is quite likely to appear at the end of a name.\n", + "\n", + "We want to sort the bigrams by their count, from the most frequent to the least frequent.\n", + "Let's see the first 10 most frequent bigrams:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "16", + "metadata": {}, + "outputs": [], + "source": [ + "sorted(bigrams.items(), key=lambda x: x[1], reverse=True)[:10]" + ] + }, + { + "cell_type": "markdown", + "id": "17", + "metadata": {}, + "source": [ + "A much better way to store this information in a 2D array, where the rows are going to be the 1st character and the columns are going to be the 2nd character.\n", + "The entry at row `a` and column `b` is going to be the count of the bigram `ab`.\n", + "\n", + "Since we are dealing with 26 characters, plus `` and ``, we need a total of 28x28 = 784 entries.\n", + "Bracketed tokens are customary in NLP to represent special tokens, but here we are only interested in knowing when a sentence starts or ends.\n", + "\n", + "But there's also a problem with keeping two special tokens for the start and end of a sentence: we can't have `('', '')` or `('', '')`, or other combinations like `('a', '')` or `('', 'b')`.\n", + "These would be invalid bigrams.\n", + "To solve this, we can replace `` with `.` and `` with `.` and have a total of 27x27 = 729 entries." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "18", + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "\n", + "N = torch.zeros((27, 27), dtype=torch.int32)" + ] + }, + { + "cell_type": "markdown", + "id": "19", + "metadata": {}, + "source": [ + "How should we encode the bigrams?\n", + "Our 2D array is going to hold integers **only**, so we need a way to make this conversion.\n", + "One way is to be a so-called **vocabulary** from our input data.\n", + "\n", + "A vocabulary requires two functions:\n", + "1. `stoi`: string to integer (**encoding**)\n", + "2. `itos`: integer to string (**decoding**)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "20", + "metadata": {}, + "outputs": [], + "source": [ + "chars = sorted(set(''.join(words)))\n", + "\n", + "stoi = {s:i+1 for i, s in enumerate(chars)}\n", + "stoi['.'] = 0 # special token for end of sentence is mapped to 0\n", + "itos = {i:s for s, i in stoi.items()}\n", + "\n", + "print(stoi)\n", + "print(itos)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "21", + "metadata": {}, + "outputs": [], + "source": [ + "for w in words:\n", + " chs = ['.'] + list(w) + ['.']\n", + " for ch1, ch2 in zip(chs, chs[1:]):\n", + " i = stoi[ch1]\n", + " j = stoi[ch2]\n", + " N[i, j] += 1" + ] + }, + { + "cell_type": "markdown", + "id": "22", + "metadata": {}, + "source": [ + "Let's create a nice visualization of our bigram frequency table:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "23", + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib as mpl\n", + "import matplotlib.pyplot as plt\n", + "\n", + "fig, ax = plt.subplots(figsize=(16,16))\n", + "norm = mpl.colors.Normalize(vmin=N.min(), vmax=N.max())\n", + "im = ax.imshow(N, cmap='Blues')\n", + "\n", + "for i in range(N.shape[0]):\n", + " for j in range(N.shape[1]):\n", + " val = norm(N[i,j])\n", + " text_color = 'white' if val > 0.5 else 'black'\n", + " # character\n", + " ax.text(j, i, itos[i]+itos[j],\n", + " ha=\"center\", va=\"bottom\",\n", + " color=text_color, fontweight='bold')\n", + " # count\n", + " ax.text(j, i, int(N[i,j]),\n", + " ha=\"center\", va=\"top\",\n", + " color=text_color)\n", + "\n", + "ax.set_axis_off()" + ] + }, + { + "cell_type": "markdown", + "id": "24", + "metadata": {}, + "source": [ + "Our bigram model is essentially an iterative sampling from a probability distribution that describes how frequent each bigram is in the dataset.\n", + "\n", + "We already have the frequency table, so we need to built a probability distribution and a sampling mechanism.\n", + "Let's do it for the first row, which represents the frequency of each bigram starting with the character '.'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "25", + "metadata": {}, + "outputs": [], + "source": [ + "proba = N[0].float()\n", + "proba /= proba.sum()\n", + "print(proba)" + ] + }, + { + "cell_type": "markdown", + "id": "26", + "metadata": {}, + "source": [ + "PyTorch provides us with a method to sample from a [**Multinomial distribution**](https://docs.pytorch.org/docs/main/distributions.html#multinomial).\n", + "A Multinomial distribution is a generalization of a [**Binomial distribution**](https://en.wikipedia.org/wiki/Binomial_distribution), where we sample from a distribution with more than two outcomes.\n", + "\n", + "To enforce predictability, we can initialize a random number generator with a fixed seed.\n", + "Also, we need to allow sampling **with replacement**, so that we can sample the same token multiple times." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "27", + "metadata": {}, + "outputs": [], + "source": [ + "gen = torch.Generator().manual_seed(2147483647)\n", + "ix = torch.multinomial(proba, num_samples=1, replacement=True, generator=gen).item()\n", + "print(itos[ix])" + ] + }, + { + "cell_type": "markdown", + "id": "28", + "metadata": {}, + "source": [ + "We can of course sample as many tokens as we want:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "29", + "metadata": {}, + "outputs": [], + "source": [ + "torch.multinomial(proba, num_samples=100, replacement=True, generator=gen)" + ] + }, + { + "cell_type": "markdown", + "id": "30", + "metadata": {}, + "source": [ + "You might have understood how the process goes: after we extract a given bigram, we need to lookup the most likely bigram that starts with the second character of the first bigram." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "31", + "metadata": {}, + "outputs": [], + "source": [ + "g = torch.Generator().manual_seed(2147483647)\n", + "NUM_WORDS = 20\n", + "\n", + "for _ in range(NUM_WORDS):\n", + " \n", + " out = []\n", + " ix = 0\n", + "\n", + " while True:\n", + " # Compute the probabilities\n", + " p = N[ix].float()\n", + " p /= p.sum()\n", + " \n", + " # Sample the next character\n", + " ix = torch.multinomial(p, num_samples=1, replacement=True, generator=g).item()\n", + " \n", + " # Add the character to the output\n", + " out.append(itos[ix])\n", + " \n", + " # Stop if we reach the end of the text\n", + " if ix == 0:\n", + " break\n", + "\n", + " print(''.join(out))" + ] + }, + { + "cell_type": "markdown", + "id": "32", + "metadata": {}, + "source": [ + "The results are quite terrible, although they're reasonable given the simplicity of the model and the patterns we're trying to capture.\n", + "\n", + "The core problem is that a bigram model looks only at the frequency of a pair of tokens, but it has zero information of what's most likely to come before or after those two tokens.\n", + "You can imagine that the obvious next step is a **trigram** model, which looks at the frequency of a triplet of tokens.\n", + "\n", + "Let's now improve a bit our code: the first thing is to compute **all** the probabilities once, and then sample from them.\n", + "PyTorch tensors support **vectorized** operations, which means that we can perform operations on entire tensors at once, without having to loop through them.\n", + "\n", + "Each row of our 2D matrix contains the counts of how many times the token with that row index is followed by all the other tokens, whose indexes run along the columns.\n", + "\n", + "$$\n", + "P_{ij}= \\frac{N_{ij}}{\\displaystyle\\sum_{k} N_{i k}}\n", + "$$\n", + "\n", + "For each pair $(i,j)$:\n", + "- The numerator $N_{ij}$ is the count of the number of times token `j` follows token `i`.\n", + "- The denominator $\\sum_{k} N_{i k}$ is the total number of times *any* character follows `i`." + ] + }, + { + "cell_type": "markdown", + "id": "33", + "metadata": {}, + "source": [ + "In Python\n", + "\n", + "```python\n", + "P = N.float()\n", + "P /= P.sum(dim=1, keepdim=True)\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "34", + "metadata": {}, + "source": [ + "Here `dim=1` tells PyTorch to sum over the columns (the second index), while `keepdim=True` tells it to keep the first dimension (the first index) as a singleton (a `1`) dimension.\n", + "Without `keepdim=True`, the result would have shape `(27,)`, and performing the division would produce the wrong result because of how [brodcasting](https://pytorch.org/docs/stable/notes/broadcasting.html) works.\n", + "\n", + "> Try to experiment with the `keepdim` parameter and see what happens if you remove it.\n", + "> Can you explain why the predictions become complete garbage?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "35", + "metadata": {}, + "outputs": [], + "source": [ + "g = torch.Generator().manual_seed(2147483647)\n", + "\n", + "P = N.float()\n", + "P /= P.sum(dim=1, keepdim=True)\n", + "\n", + "for _ in range(10):\n", + " \n", + " out = []\n", + " ix = 0\n", + "\n", + " while True:\n", + " # Get the probabilities\n", + " p = P[ix]\n", + " \n", + " # Sample the next character\n", + " ix = torch.multinomial(p, num_samples=1, replacement=True, generator=g).item()\n", + " \n", + " # Add the character to the output\n", + " out.append(itos[ix])\n", + " \n", + " # Stop if we reach the end of the text\n", + " if ix == 0:\n", + " break\n", + "\n", + " print(''.join(out))" + ] + }, + { + "cell_type": "markdown", + "id": "36", + "metadata": {}, + "source": [ + "### Evaluating the quality of the model" + ] + }, + { + "cell_type": "markdown", + "id": "37", + "metadata": {}, + "source": [ + "We have built a bigram language model by counting letter combination frequencies, then normalizing and sampling with that probability base.\n", + "\n", + "We trained the model, we sampled from the model (iteratively, character-wise).\n", + "But its still bad at coming up with names.\n", + "\n", + "But how bad?\n", + "We know that the model's \"knowledge\" is represented by `P`, but how can we boil down the model's quality in one value?\n", + "\n", + "First, let's look at the bigrams we created from the dataset: the bigrams to `emma` are `.e, em, mm, ma, a.`.\n", + "**What probability does the model assign to each of those bigrams?**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "38", + "metadata": {}, + "outputs": [], + "source": [ + "for w in words[:1]:\n", + " chs = ['.'] + list(w) + ['.']\n", + " for ch1, ch2 in zip(chs, chs[1:]): # Neat way for two char 'sliding-window'\n", + " ix1 = stoi[ch1]\n", + " ix2 = stoi[ch2]\n", + " prob = P[ix1, ix2]\n", + " print(f'{ch1}{ch2}: {prob:.2%}')" + ] + }, + { + "cell_type": "markdown", + "id": "39", + "metadata": {}, + "source": [ + "Anything above or below $\\frac{1}{27} \\approx 3.7\\%$ means we deviate from the mean, that is, a completely uniform distribution of bigrams. \n", + "And that means we learned something from the bigram statistics.\n", + "\n", + "How can we summarize these probabilities into a quality indicating measurement?\n", + "We may compute the product of all probabilities — a number called the **likelihood**.\n", + "But since all these probabilities are small numbers, the product is also a small number, and it is hard to compare likelihoods.\n", + "Solution: *The log-likelihood, the **sum** of $\\log(P)$ over all the individual token probabilities* ($\\log$ is applied for convenience).\n", + "\n", + "> The higher the log-likelihood, the better the model, because the more capable it is of predicting the next character in a sequence from the dataset." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "40", + "metadata": {}, + "outputs": [], + "source": [ + "# Initialize variables\n", + "log_likelihood = 0.0\n", + "n = 0 # character pair count\n", + "\n", + "for word in words:\n", + " # Add start/end tokens and convert to character list\n", + " chars = ['.'] + list(word) + ['.']\n", + " \n", + " # Calculate log probabilities in a more compact way\n", + " for ch1, ch2 in zip(chars, chars[1:]):\n", + " prob = P[stoi[ch1], stoi[ch2]]\n", + " log_likelihood += torch.log(prob)\n", + " n += 1\n", + "\n", + "print(f'{log_likelihood=}')\n", + "\n", + "nll = -log_likelihood\n", + "\n", + "print(f'{nll=}') # Negative log likelihood\n", + "print(f'Average NLL: {nll/n:.4f}') # More descriptive output" + ] + }, + { + "cell_type": "markdown", + "id": "41", + "metadata": {}, + "source": [ + "We calculated a negative log-likelihood, because this follows the convention of setting the goal to minimize the **loss function**, the function that drives the optimization (i.e., training) process.\n", + "The lower the loss/negative log-likelihood, the better the model.\n", + "\n", + "We got $2.45$ for the model.\n", + "The lower, the better.\n", + "We need to find the parameters that reduce this value.\n", + "\n", + "**Goal:** Maximize likelihood of the trained data w. r. t. model parameters in `P`\n", + "- This is equivalent to maximizing the log-likelihood (as $\\log$ is monotonic)\n", + "- This is equivalent to minimizing the *negative* log-likelihood\n", + "- And this is equivalent to minimizing the average negative log-likelihood (the quality-measurement, as shown by $2.45$ above)" + ] + }, + { + "cell_type": "markdown", + "id": "42", + "metadata": {}, + "source": [ + "There's an immediate problem, though: if we have a word containing a bigram that **never** appears in our training data, the model will assign a probability of $0$ to it, which will make the log-likelihood $-\\infty$." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "43", + "metadata": {}, + "outputs": [], + "source": [ + "# Initialize variables\n", + "log_likelihood = 0.0\n", + "n = 0 # character pair count\n", + "\n", + "for word in [\"edobq\"]:\n", + " # Add start/end tokens and convert to character list\n", + " chars = ['.'] + list(word) + ['.']\n", + " \n", + " # Calculate log probabilities in a more compact way\n", + " for ch1, ch2 in zip(chars, chars[1:]):\n", + " prob = P[stoi[ch1], stoi[ch2]]\n", + " log_likelihood += torch.log(prob)\n", + " n += 1\n", + "\n", + "print(f'{log_likelihood=}')\n", + "nll = -log_likelihood\n", + "print(f'{nll=}') # Negative log likelihood\n", + "print(f'Average NLL: {nll/n:.4f}') # More descriptive output" + ] + }, + { + "cell_type": "markdown", + "id": "44", + "metadata": {}, + "source": [ + "A negative infinite log-likelihood is definitely not good because our optimizer will never find a \"stable\" solution.\n", + "\n", + "One simple fix is to assign a small but non-zero probability to every bigram: this is called **model smoothing**.\n", + "The easiest way is to ensure that no bigram *never* appears: we can achieve this by adding a constant to our 2D matrix `N`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "45", + "metadata": {}, + "outputs": [], + "source": [ + "PS = (N + 1).float() # The higher the number, the more smoothing we apply\n", + "PS /= PS.sum(dim=1, keepdim=True)\n", + "\n", + "# Initialize variables\n", + "log_likelihood = 0.0\n", + "n = 0 # character pair count\n", + "\n", + "for word in [\"edobq\"]:\n", + " # Add start/end tokens and convert to character list\n", + " chars = ['.'] + list(word) + ['.']\n", + " \n", + " # Calculate log probabilities in a more compact way\n", + " for ch1, ch2 in zip(chars, chars[1:]):\n", + " prob = PS[stoi[ch1], stoi[ch2]] # Use the smoothed probabilities\n", + " log_likelihood += torch.log(prob)\n", + " n += 1\n", + "\n", + "print(f'{log_likelihood=}')\n", + "nll = -log_likelihood\n", + "print(f'{nll=}') # Negative log likelihood\n", + "print(f'Average NLL: {nll/n:.4f}') # More descriptive output" + ] + }, + { + "cell_type": "markdown", + "id": "46", + "metadata": {}, + "source": [ + "## A neural network approach" + ] + }, + { + "cell_type": "markdown", + "id": "47", + "metadata": {}, + "source": [ + "We will cast the problem of character estimation into the framework of neural networks.\n", + "The problem remains the same, the approach changes, and the outcome should look similar.\n", + "\n", + "Our neural network **receives a single character** and **outputs the probability distribution over the next possible characters** ($27$ in this case).\n", + "\n", + "It's going to make guesses on the most likely character to follow.\n", + "We can still measure the performance through the *same* loss function, the negative log-likelihood.\n", + "\n", + "From the training data, we also know the character that actually comes next in each training example.\n", + "We'll use this information to fine-tune (i.e., train or update the parameters of) the neural network to make better guesses: this is a textbook example of **supervised learning**." + ] + }, + { + "cell_type": "markdown", + "id": "48", + "metadata": {}, + "source": [ + "### The training set" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "49", + "metadata": {}, + "outputs": [], + "source": [ + "import torch" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "50", + "metadata": {}, + "outputs": [], + "source": [ + "#Create training set of all bigrams\n", + "xs, ys = [], [] # Input and output character indices\n", + "\n", + "for w in words:\n", + " chs = ['.'] + list(w) + ['.']\n", + " for ch1, ch2 in zip(chs, chs[1:]):\n", + " ix1 = stoi[ch1]\n", + " ix2 = stoi[ch2]\n", + " xs.append(ix1)\n", + " ys.append(ix2)\n", + "\n", + "# Convert lists to tensors\n", + "xs = torch.tensor(xs)\n", + "ys = torch.tensor(ys)" + ] + }, + { + "cell_type": "markdown", + "id": "51", + "metadata": {}, + "source": [ + "We can inspect the first few tokens from the two tensors:\n", + "- `xs` will be the input tokens (what the model will see)\n", + "- `ys` will be the target tokens (what we want the model to predict)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "52", + "metadata": {}, + "outputs": [], + "source": [ + "for i in range(5):\n", + " print(f'For character #{i} \"{itos[xs[i].item()]}\" in xs, we expect the model to predict \"{itos[ys[i].item()]}\"')" + ] + }, + { + "cell_type": "markdown", + "id": "53", + "metadata": {}, + "source": [ + "One important detail about PyTorch tensors: there exists `torch.Tensor` (a class) and `torch.tensor()` (a method).\n", + "They are related, but different:\n", + "- `torch.Tensor` is a class, and every PyTorch tensor is an instance of this class.\n", + "- `torch.tensor()` is a method to create a tensor, with `dtype` automatically inferred from the input data.\n", + "\n", + "Except for when initializing a completely empty tensor, in general there is no reason to choose `torch.Tensor` over `torch.tensor`. \n", + "Note that `torch.Tensor` is an alias for `torch.FloatTensor`, with a default `dtype` of `torch.float32`.\n", + "\n", + "In general, you should use `torch.tensor()` almost always, unless you have a specific reason to use `torch.Tensor`.\n", + "\n", + "Here you can find more details from the official docs:\n", + "- [`torch.tensor()`](https://docs.pytorch.org/docs/stable/generated/torch.tensor.html#torch-tensor)\n", + "- [`torch.Tensor`](https://docs.pytorch.org/docs/stable/tensors.html)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "54", + "metadata": {}, + "outputs": [], + "source": [ + "xs.dtype, xs.type()" + ] + }, + { + "cell_type": "markdown", + "id": "55", + "metadata": {}, + "source": [ + "`torch.LongTensor` here means that the tensor contains 64-bit (8-byte) integers." + ] + }, + { + "cell_type": "markdown", + "id": "56", + "metadata": {}, + "source": [ + "### Feeding the network" + ] + }, + { + "cell_type": "markdown", + "id": "57", + "metadata": {}, + "source": [ + "A neural network essentially is made up of **layers**.\n", + "At high-level, each layer is typically a linear transformation followed by a non-linear activation function.\n", + "Something like: $\\text{output} = \\text{activation}(\\text{weights} \\cdot \\text{input} + \\text{bias})$\n", + "\n", + "If we were to feed our characters as integer indexes, we would have a sequence of integer indexes as input.\n", + "If `a` is 1 and `z` is 25, the weight applied to `z` will have 25 times more impact on the output than `a`.\n", + "This creates an arbitrary and misleading mathematical relationship.\n", + "\n", + "Moreover, during the training (optimization) phase, the updates to the weights will be proportional to their input values.\n", + "Larger input values will cause larger updates to the weights, which can lead to unstable training.\n", + "\n", + "And lastly, the network has no reference to the potential value range.\n", + "It doesn't know that the values are constrained to a specific set (like 0-25 for letters).\n", + "\n", + "To address all these issues, we can use **one-hot encoding**.\n", + "One-hot encoding each letter means creating a vector where only one position has a value of 1 (corresponding to that letter's position in the alphabet) and all other positions are 0.\n", + "This gives the neural network a much clearer signal about which letter is present without introducing misleading numerical relationships.\n", + "This approach is particularly important in language models where the relationships between symbols (letters, words) are learned from their contexts and co-occurrences, not from arbitrary numeric values assigned to them." + ] + }, + { + "cell_type": "markdown", + "id": "58", + "metadata": {}, + "source": [ + "Luckily, PyTorch provides a convenient way to perform one-hot encoding using the `torch.nn.functional.one_hot` function." + ] + }, + { + "cell_type": "markdown", + "id": "59", + "metadata": {}, + "source": [ + "Let's encode the first 5 tokens (`.emma`), print and visualize the result:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "60", + "metadata": {}, + "outputs": [], + "source": [ + "import torch.nn.functional as F\n", + "\n", + "F.one_hot(xs[:5], num_classes=27)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "61", + "metadata": {}, + "outputs": [], + "source": [ + "xenc = F.one_hot(xs[:5], num_classes=27)\n", + "xenc.shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "62", + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "\n", + "plt.imshow(xenc)" + ] + }, + { + "cell_type": "markdown", + "id": "63", + "metadata": {}, + "source": [ + "One problem is the `dtype` of the one-hot encoded tensor.\n", + "It is `torch.int64` by default (inferred from our data), but we need `torch.float32` to have an input suitable for the mathematical operations the network will perform.\n", + "\n", + "We can convert it using `.float()`:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "64", + "metadata": {}, + "outputs": [], + "source": [ + "xenc = F.one_hot(xs[:5], num_classes=27).float()\n", + "xenc.dtype" + ] + }, + { + "cell_type": "markdown", + "id": "65", + "metadata": {}, + "source": [ + "Let's experiment with neurons.\n", + "We build one $27$-dimensional neuron and approach it with the letter-wise input of our first name `.emma` (That's $5$ letters)\n", + "\n", + "A neuron is represented as a column vector of $27$ numbers, randomly drawn from a normal distribution.\n", + "We can do this with [`torch.randn`](https://docs.pytorch.org/docs/main/generated/torch.randn.html):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "66", + "metadata": {}, + "outputs": [], + "source": [ + "g = torch.Generator().manual_seed(2147483647)\n", + "\n", + "W = torch.randn((27,1), generator=g)\n", + "# '@' is PyTorch's matrix multiplication operator (5x27 @ 27x1 -> 5x1)\n", + "a = xenc @ W\n", + "\n", + "# This is now a 5x1 vector\n", + "print(a)" + ] + }, + { + "cell_type": "markdown", + "id": "67", + "metadata": {}, + "source": [ + "`W` is a **single** neuron.\n", + "Multiplying it by `xenc` makes it 'react' to the one-hot encoded input.\n", + "The result is a $5\\times 1$ vector.\n", + "\n", + "`.emma` has $5$ characters, we have $1$ neuron.\n", + "When this neuron processes the 5 characters of \".emma\", it produces 5 activation values, one for each character.\n", + "Each activation value represents how strongly the neuron \"reacts\" to or \"recognizes\" each character.\n", + "\n", + "We want to have $27$ neurons, one for each possible character.\n", + "Each neuron can \"specialize\" in recognizing one specific character.\n", + "Also, since each neuron has $27$ dimensions, we'll end up with a matrix $27\\times 27$ of weights." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "68", + "metadata": {}, + "outputs": [], + "source": [ + "W = torch.randn((27,27), generator=g)\n", + "a = xenc @ W\n", + "\n", + "# This is now a 5x27 matrix\n", + "print(a)" + ] + }, + { + "cell_type": "markdown", + "id": "69", + "metadata": {}, + "source": [ + "What the matrix multiplication did is give us the **firing rates** of each neuron for each character.\n", + "For example `(a @ W)[3, 13]` is the firing rate of the 14th neuron for the 4th character.\n", + "This is a very efficient way of computing the firing rates for all characters and all neurons." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "70", + "metadata": {}, + "outputs": [], + "source": [ + "xenc[3], W[:, 13]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "71", + "metadata": {}, + "outputs": [], + "source": [ + "(xenc[3] * W[:, 13]).sum(), (xenc @ W)[3, 13]" + ] + }, + { + "cell_type": "markdown", + "id": "72", + "metadata": {}, + "source": [ + "### Regaining a normal distribution" + ] + }, + { + "cell_type": "markdown", + "id": "73", + "metadata": {}, + "source": [ + "We want the neurons per input (per character) to come up with a $27$-dimensional activation of values that could be transformed into a normal distribution on what character to choose next.\n", + "We've seen that with the Bigram's probability distribution, given info per character on what character is most likely to follow.\n", + "\n", + "Right now, for every character we get $27$ numbers, positive and negative, but not following a normal distribution.\n", + "\n", + "- **What we want:** For each character in our input, we want to predict the probability distribution of the next character (similar to a bigram model).\n", + "\n", + "- **What we have:** For each character in our input, we get $27$ numbers, positive and negative, but not following a normal distribution.\n", + "\n", + "- **Problem:** These raw outputs are just arbitrary numbers that can be positive or negative.\n", + "They don't naturally sum to 1 or represent probabilities.\n", + "\n", + "The solution is to change our interpretation of the output values of the neurons.\n", + "We can think of the neural network's raw outputs as \"log-counts\" (also called \"logits\") or \"scores\" rather than direct probabilities.\n", + "\n", + "To convert this numbers into proper probabilities:\n", + "\n", + "1. First, we **exponentiate** each value (turning negative numbers into small positives and making large positives even larger)\n", + "2. Then, we normalize the values so that they sum to 1.\n", + "\n", + "This is achievied with a function called **softmax** function." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "74", + "metadata": {}, + "outputs": [], + "source": [ + "# Compute the raw output scores (logits) for each character in the input\n", + "logits = xenc @ W # Shape: (5, 27) - 5 input characters, 27 possible output characters\n", + "\n", + "# Exponentiate the logits to get positive \"fake counts\" (similar to unnormalized probabilities)\n", + "counts = logits.exp() # Negative logits yield values between 0 and 1; positive logits yield values greater than 1\n", + "\n", + "# Normalize the counts along each row to obtain probabilities (each row sums to 1)\n", + "probs = counts / counts.sum(1, keepdims=True) # Shape: (5, 27)\n", + "\n", + "# Print the shape of the probability matrix and verify normalization\n", + "print(probs.shape) # Will print: (5, 27)\n", + "print(probs[0].sum()) # Will print: 1.0 (or very close, due to floating point precision)" + ] + }, + { + "cell_type": "markdown", + "id": "75", + "metadata": {}, + "source": [ + "It might seem unusual, but after this transformation, we have a set of numbers that we can use just like the actual counts from the bigram model.\n", + "\n", + "All the values are non-negative: think of them as \"pseudo-counts.\"\n", + "Now, our goal is simply to adjust the weights `W` so that the network produces the correct character indices as output." + ] + }, + { + "cell_type": "markdown", + "id": "76", + "metadata": {}, + "source": [ + "### Recap: How the Neural Network Processes Input Characters\n", + "\n", + "Given the input `.emma`, the neural network handles each character step by step:\n", + "\n", + "1. **Input Preparation:** \n", + " - Take the current character (e.g., `.`) and map it to its index (e.g., 0).\n", + " - One-hot encode this index into a 27-dimensional vector.\n", + "\n", + "2. **Neural Network Computation:** \n", + " - Feed the one-hot vector into the network (shape: $27 \\times 1$).\n", + " - The network applies its weights, producing a $1 \\times 27$ vector of activations (logits).\n", + "\n", + "3. **Softmax Transformation:** \n", + " - Exponentiate each logit to ensure all values are positive.\n", + " - Normalize the result so the values sum to 1, yielding a probability distribution over all possible next characters.\n", + "\n", + "The Softmax function turns the network's raw outputs into probabilities, indicating how likely each character is to follow the current input.\n", + "\n", + "The core question is now: \n", + "Can we optimize the weights `W` so that the network’s predicted probabilities match the actual sequence in our data?" + ] + }, + { + "cell_type": "markdown", + "id": "77", + "metadata": {}, + "source": [ + "We can now evaluate how well our neural network predicts the next character in a sequence.\n", + "For each bigram (pair of consecutive characters), we:\n", + "\n", + "- Feed the input character to the neural network.\n", + "- Get the predicted probability distribution for the next character.\n", + "- Check how much probability the network assigns to the actual next character.\n", + "- Calculate the negative log-likelihood (NLL) for this prediction, which tells us how \"surprised\" the network is by the true answer (lower is better).\n", + "- Finally, we average the NLLs across all bigrams to get the overall loss, which is what we want to minimize during training." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "78", + "metadata": {}, + "outputs": [], + "source": [ + "# Reminder: xs is a tensor containing the indexes of **all** the characters\n", + "# We take the first 5 characters to form the bigrams\n", + "xs = xs[:5]\n", + "ys = ys[:5]\n", + "\n", + "# Initialize tensor to store negative log likelihoods (NLL) for each bigram\n", + "nlls = torch.zeros(len(xs)) # There are 5 bigrams in '.emma.'\n", + "\n", + "# Loop through each bigram in the sequence\n", + "for i in range(len(xs)):\n", + " x = xs[i].item() # Input character index\n", + " y = ys[i].item() # Target (next) character index\n", + "\n", + " print(\"\\n-------\")\n", + " print(f'Bigram {i+1}: (\"{itos[x]}\", \"{itos[y]}\") [indexes ({x}, {y})]')\n", + " print(f' Input to neural net: {x} (\"{itos[x]}\")')\n", + " print(f' Output probabilities:\\n{probs[i]}')\n", + " \n", + " # Most likely next character according to the model\n", + " predicted_index = probs[i].argmax().item()\n", + " predicted_char = itos[predicted_index]\n", + " predicted_prob = probs[i].max().item()\n", + " print(f' Most likely next character: {predicted_char} (index {predicted_index}, probability {predicted_prob:.4f})')\n", + " \n", + " print(f' Actual next character (label): {itos[y]} (index {y})')\n", + " \n", + " # Probability assigned to the correct character\n", + " p = probs[i, y]\n", + " print(f' Probability assigned to correct character: {p.item():.4f}')\n", + " \n", + " # Log likelihood and negative log likelihood\n", + " logp = torch.log(p)\n", + " nll = -logp\n", + " print(f' Log likelihood: {logp.item():.4f}')\n", + " print(f' Negative log likelihood: {nll.item():.4f}')\n", + " \n", + " # Store NLL for this bigram\n", + " nlls[i] = nll\n", + "\n", + "print('\\n============')\n", + "print(f'Average negative log likelihood (loss): {nlls.mean().item():.4f}')" + ] + }, + { + "cell_type": "markdown", + "id": "79", + "metadata": {}, + "source": [ + "What do these results tell us?\n", + "- In each case, the probability assigned to the correct next character is relatively low, meaning the model is not yet confident in its predictions.\n", + "- The most likely character predicted by the model is often not the correct one.\n", + "- The negative log likelihood values are relatively high, indicating the model is “surprised” by the true next character.\n", + "- The final line reports the average negative log likelihood (loss) across all bigrams: 3.44.\n", + "This is a key metric for training — the goal is to minimize this value by adjusting the model’s weights.\n", + "\n", + "The network is currently not very accurate at predicting the next character, as shown by the low probabilities for the correct answers and the high loss.\n", + "This is expected at the start, before any training." + ] + }, + { + "cell_type": "markdown", + "id": "80", + "metadata": {}, + "source": [ + "### Optimization" + ] + }, + { + "cell_type": "markdown", + "id": "81", + "metadata": {}, + "source": [ + "Remember that we started with `W` as a completely random matrix of floats.\n", + "Hoping that random initialization would yield a good solution is like hoping that a random collection of Lego bricks will build a house.\n", + "\n", + "Instead, we will actively improve the model’s predictions.\n", + "Specifically, we will adjust the weights in the matrix `W` to increase the probability of correctly predicting the second character in each bigram.\n", + "\n", + "This is done by computing how the loss changes with respect to each weight (i.e., calculating the gradients), and then updating the weights in a way to reduce the overall loss.\n", + "This process — called **gradient-based optimization** — enables the neural network to learn from its mistakes and become better at predicting the next character in the sequence." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "82", + "metadata": {}, + "outputs": [], + "source": [ + "# Display the probability assigned by the model to the correct next character for each bigram\n", + "bigram_descriptions = [\n", + " ('input \".\" → output \"e\"', 0, 5),\n", + " ('input \"e\" → output \"m\"', 1, 13),\n", + " ('input \"m\" → output \"m\"', 2, 13),\n", + " ('input \"m\" → output \"a\"', 3, 1),\n", + " ('input \"a\" → output \".\"', 4, 0),\n", + "]\n", + "\n", + "print(\"Probability assigned by the model to the correct next character for each bigram:\\n\")\n", + "for desc, i, j in bigram_descriptions:\n", + " prob = probs[i, j].item()\n", + " print(f\"{desc:25s}: {prob:.4f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "83", + "metadata": {}, + "source": [ + "We can extract pretty easily with PyTorch the probabilities the model assigns to the correct next character for each bigram:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "84", + "metadata": {}, + "outputs": [], + "source": [ + "probs[torch.arange(len(probs)), ys]" + ] + }, + { + "cell_type": "markdown", + "id": "85", + "metadata": {}, + "source": [ + "Our loss is, as before, the average negative log-likelihood from these values:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "86", + "metadata": {}, + "outputs": [], + "source": [ + "loss = -probs[torch.arange(len(probs)), ys].log().mean()\n", + "print(loss.item())" + ] + }, + { + "cell_type": "markdown", + "id": "87", + "metadata": {}, + "source": [ + "The training phase has two main steps: the forward and the backward pass.\n", + "\n", + "**Forward Pass**:\n", + "we feed input data through the network to obtain predictions (in this case, the probabilities for the next character).\n", + "We then compute a loss value, which measures how far off the network’s predictions are from the actual answers.\n", + "Here, the loss is the average negative log likelihood of the correct next character across all inputs.\n", + "\n", + "**Backward Pass**:\n", + "The backward pass is where learning happens.\n", + "Using the computed loss, PyTorch automatically calculates how much each parameter (the weights in `W`) contributed to the error.\n", + "This is done via a process called **backpropagation**, which computes the gradients.\n", + "That is, it calculates the direction and amount by which each weight should be adjusted to reduce the loss." + ] + }, + { + "cell_type": "markdown", + "id": "88", + "metadata": {}, + "source": [ + "We can instruct PyTorch to track all the operations we perform on tensors by setting `requires_grad=True`.\n", + "This is done by calling `W.requires_grad_(True)`.\n", + "This is a common pattern in PyTorch: we create a tensor, set `requires_grad=True`, and then perform operations on it." + ] + }, + { + "cell_type": "markdown", + "id": "89", + "metadata": {}, + "source": [ + "So, in summary:\n", + "\n", + "- Including the loss calculation in the forward pass gives us a measure of the network’s performance for each batch.\n", + "- Calling `.backward()` on the loss triggers PyTorch to compute gradients for all parameters with `requires_grad=True`.\n", + "- These gradients indicate how to adjust the weights to reduce the loss.\n", + "- Updating the weights using the gradients should improve the model’s predictions in the next iteration.\n", + "\n", + "This is the core of the training loop." + ] + }, + { + "cell_type": "markdown", + "id": "90", + "metadata": {}, + "source": [ + "### Putting it all together" + ] + }, + { + "cell_type": "markdown", + "id": "91", + "metadata": {}, + "source": [ + "Let's summarize all the steps and put it all together." + ] + }, + { + "cell_type": "markdown", + "id": "92", + "metadata": {}, + "source": [ + "#### Preparing data\n", + "\n", + "We break down text (a sequence of strings) into sequences of adjacent characters, called n-grams.\n", + "Here, we're creating \"bigrams\" (pairs of consecutive characters) from our dataset.\n", + "\n", + "For each word in our input data:\n", + "1. We add special start and end markers (`.`)\n", + "2. We create pairs of adjacent characters\n", + "3. We convert each character to its numerical index using our mapping\n", + "\n", + "This gives us input-output pairs `(x, y)` where:\n", + "- `x` is the index of the current character\n", + "- `y` is the index of the next character\n", + "\n", + "These pairs become our training examples." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "93", + "metadata": {}, + "outputs": [], + "source": [ + "# Create training set of all bigrams from words\n", + "xs, ys = [], []\n", + "\n", + "# Process each word to extract bigrams\n", + "for w in words:\n", + " # Add start/end markers to each word\n", + " chars = ['.'] + list(w) + ['.']\n", + " \n", + " # Create pairs of adjacent characters\n", + " for ch1, ch2 in zip(chars, chars[1:]):\n", + " # Convert characters to their indices\n", + " idx1 = stoi[ch1] # Current character index\n", + " idx2 = stoi[ch2] # Next character index\n", + " \n", + " # Add to our training examples\n", + " xs.append(idx1)\n", + " ys.append(idx2)\n", + "\n", + "# Convert lists to PyTorch tensors\n", + "xs = torch.tensor(xs)\n", + "ys = torch.tensor(ys)\n", + "\n", + "# Print dataset size\n", + "print(f'Number of training examples: {xs.nelement()}')" + ] + }, + { + "cell_type": "markdown", + "id": "94", + "metadata": {}, + "source": [ + "#### Initializing the neural network\n", + "\n", + "Our model is a simple, single-layer, no-bias neural network represented by a weight matrix `W`.\n", + "\n", + "- The weight matrix has dimensions $27 \\times 27$ (input size × output size)\n", + "- Each column represents the weights for predicting one of the 27 possible next characters\n", + "- We set `requires_grad=True` to enable automatic gradient computation during training (this is essential for backpropagation)" + ] + }, + { + "cell_type": "markdown", + "id": "95", + "metadata": {}, + "source": [ + "At this step, we can optionally tell PyTorch to use a GPU if available." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "96", + "metadata": {}, + "outputs": [], + "source": [ + "# Set the device (CPU or GPU if available)\n", + "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n", + "print(f\"Using device: {device}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "97", + "metadata": {}, + "outputs": [], + "source": [ + "# Initialize the neural network's weight matrix\n", + "g = torch.Generator(device=device).manual_seed(2147483647) # Fixed seed for reproducibility\n", + "\n", + "# Create weight matrix (27×27) with trainable parameters\n", + "W = torch.randn((27, 27), device=device, generator=g, requires_grad=True)" + ] + }, + { + "cell_type": "markdown", + "id": "98", + "metadata": {}, + "source": [ + "#### Training the neural network\n", + "\n", + "We now train our model using gradient descent.\n", + "For each training epoch, we:\n", + "\n", + "1. **Forward Pass:** Feed the input data through the network to get predictions\n", + " - Convert inputs to one-hot encoding\n", + " - Compute logits by matrix multiplication with weights\n", + " - Apply softmax to get probability distributions\n", + " - Calculate the loss (negative log likelihood)\n", + "\n", + "2. **Backward Pass:** Compute gradients of the loss with respect to weights\n", + " - Reset existing gradients\n", + " - Backpropagate the loss\n", + "\n", + "3. **Update Weights:** Adjust weights to reduce the loss\n", + " - Simple gradient descent: `W = W - learning_rate * gradient`\n", + "\n", + "The loss should decrease with each epoch, indicating the model is learning." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "99", + "metadata": {}, + "outputs": [], + "source": [ + "# Training for 200 epochs\n", + "for epoch in range(200):\n", + " # ----- Forward Pass -----\n", + " # Convert input indices to one-hot vectors\n", + " xenc = F.one_hot(xs, num_classes=27).float().to(device)\n", + " \n", + " # Compute raw outputs (logits)\n", + " logits = xenc @ W\n", + " \n", + " # Apply softmax: first exponentiate\n", + " counts = logits.exp()\n", + " \n", + " # Then normalize to get probabilities\n", + " probs = counts / counts.sum(1, keepdims=True)\n", + " \n", + " # Calculate negative log likelihood loss\n", + " loss = -probs[torch.arange(len(probs)), ys].log().mean()\n", + " \n", + " # Print progress\n", + " print(f'Loss @ epoch {epoch+1}: {loss.item():.4f}')\n", + " \n", + " # ----- Backward Pass -----\n", + " # Reset gradients\n", + " W.grad = None\n", + " \n", + " # Compute gradients\n", + " loss.backward()\n", + " \n", + " # ----- Update Weights -----\n", + " # Simple gradient descent (learning rate = 50)\n", + " W.data += -50 * W.grad" + ] + }, + { + "cell_type": "markdown", + "id": "100", + "metadata": {}, + "source": [ + "#### Comparison with a Bigram frequency model\n", + "\n", + "Our trained neural network achieves a loss of around 2.46, which is nearly identical to the explicit bigram count approach (loss of 2.45).\n", + "This similarity isn't surprising—our simple neural network is essentially learning to mimic the count-to-distribution relationship of the bigram model.\n", + "\n", + "**The key difference is in flexibility and scalability.**\n", + "\n", + "The core workflow of the neural network will remain consistent as we build more complex models:\n", + "\n", + "1. Initialize weights\n", + "2. Calculate activations \n", + "3. Convert to probabilities\n", + "4. Optimize weights based on loss\n", + "\n", + "While our current neural network doesn't outperform the simpler bigram approach, its architecture allows for natural extension to more complex patterns.\n", + "As we add layers and consider longer sequences of characters, the neural network framework will scale elegantly.\n", + "\n", + "Consider the fundamental scaling challenge: with a bigram model looking at just the previous character, we need to store $27^2 = 729$ probabilities (one for each possible character pairs).\n", + "If we wanted to consider the previous 10 characters to make better predictions:\n", + "\n", + "- A traditional n-gram approach would require storing $27^{10} \\approx 205$ trillion different probability values—completely impractical in terms of memory and impossible to train with limited data.\n", + "\n", + "- In contrast, a neural network can learn to **compress this information efficiently**.\n", + "By adding more neurons and layers, we can capture complex patterns without an exponential explosion in parameters.\n", + "A network might need only thousands or millions of parameters to effectively model these dependencies, not trillions.\n", + "\n", + "This is why neural networks excel at language modeling tasks where context beyond just the previous character is crucial.\n", + "\n", + "> **Conclusion:** \n", + ">\n", + ">The bigram approach quickly hits scaling limitations, while neural networks excel precisely where the bigram model fails." + ] + }, + { + "cell_type": "markdown", + "id": "101", + "metadata": {}, + "source": [ + "#### Smoothing applied to a neural network" + ] + }, + { + "cell_type": "markdown", + "id": "102", + "metadata": {}, + "source": [ + "Remember that with the Bigram Model we used a smoothing technique to avoid zero probabilities.\n", + "This was basically adding a small constant to all counts (`+1` in our case).\n", + "The bigger this constant, the more smoothed the distribution will be.\n", + "\n", + "This is a simple example of a **regularization** technique, which can also be applied to our neural network approach.\n" + ] + }, + { + "cell_type": "markdown", + "id": "103", + "metadata": {}, + "source": [ + "How can we do this for a neural network?\n", + "\n", + "1. We add a penalty term to the loss function based on the weights\n", + "2. This penalty pushes weights toward zero\n", + "3. Smaller weights result in smoother, more uniform output distributions\n", + "4. The strength of regularization is controlled by a tunable **hyperparameter**\n", + "\n", + "> **Note:** an hyperparameter is a parameter that is not learned from the data, but is set by the user.\n", + "\n", + "Think of regularization as a gentle force pulling weights toward zero.\n", + "Without it, the model might learn to perfectly match the training data but fail to generalize.\n", + "With regularization, we sacrifice some training accuracy for better generalization.\n", + "\n", + "Here we will use **L2 regularization** (also called weight decay), which adds the mean of squared weights to the loss function." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "104", + "metadata": {}, + "outputs": [], + "source": [ + "# Calculate regularization term (mean of squared weights)\n", + "# This will be added to the loss function to penalize large weights\n", + "print(\"Regularization term (L2 norm of weights):\")\n", + "reg_term = (W**2).mean().item()\n", + "print(f\"{reg_term:.6f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "105", + "metadata": {}, + "outputs": [], + "source": [ + "# Training for 200 epochs with regularization\n", + "lambda_reg = 0.01 # Regularization strength\n", + "\n", + "for epoch in range(200):\n", + " # ----- Forward Pass -----\n", + " # Convert input indices to one-hot vectors\n", + " xenc = F.one_hot(xs, num_classes=27).float().to(device)\n", + " \n", + " # Compute raw outputs (logits)\n", + " logits = xenc @ W\n", + " \n", + " # Apply softmax: first exponentiate\n", + " counts = logits.exp()\n", + " \n", + " # Then normalize to get probabilities\n", + " probs = counts / counts.sum(1, keepdims=True)\n", + " \n", + " # Calculate negative log likelihood loss + regularization term\n", + " # Main loss: how well we predict the next character\n", + " nll_loss = -probs[torch.arange(len(probs)), ys].log().mean()\n", + " # Regularization loss: penalty for large weights\n", + " reg_loss = lambda_reg * (W**2).mean()\n", + " # Combined loss\n", + " loss = nll_loss + reg_loss\n", + " \n", + " print(f'Loss @ epoch {epoch+1}: {loss.item():.4f}')\n", + " \n", + " # ----- Backward Pass -----\n", + " # Reset gradients\n", + " W.grad = None\n", + " \n", + " # Compute gradients (including regularization effect)\n", + " loss.backward()\n", + " \n", + " # ----- Update Weights -----\n", + " # Simple gradient descent (learning rate = 50)\n", + " W.data += -50 * W.grad" + ] + }, + { + "cell_type": "markdown", + "id": "106", + "metadata": {}, + "source": [ + "#### Sampling from our trained model\n", + "\n", + "After training, we can use our model to generate new character sequences.\n", + "\n", + "For each position:\n", + "1. We start with the \".\" character (index 0)\n", + "2. The model predicts probabilities for the next character\n", + "3. We sample from this probability distribution\n", + "4. We continue until we generate another \".\" (end marker)\n", + "\n", + "This process is similar to what we did with the bigram model, but now using our neural network for predictions.\n", + "\n", + "Incidentally, this is the same process that drives the generation of text by large language models like ChatGPT, although we are nowhere near the sophistication of ChatGPT." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "107", + "metadata": {}, + "outputs": [], + "source": [ + "# Sample new names from the trained model\n", + "g = torch.Generator(device=device).manual_seed(2147483642) # Fixed seed for reproducibility\n", + "\n", + "print(\"Generated names:\")\n", + "for i in range(5):\n", + " out = []\n", + " ix = 0 # Start with '.' character (index 0)\n", + " \n", + " while True:\n", + " # ----- Generate next character -----\n", + " # Convert current character index to one-hot encoding\n", + " xenc = F.one_hot(torch.tensor([ix]), num_classes=27).float().to(device)\n", + " \n", + " # Forward pass through the model\n", + " logits = xenc @ W # Get logits (raw output scores)\n", + " counts = logits.exp() # Convert to positive values\n", + " p = counts / counts.sum(1, keepdims=True) # Normalize to probabilities\n", + " \n", + " # Sample from the probability distribution\n", + " ix = torch.multinomial(p, num_samples=1, replacement=True, generator=g).item()\n", + " \n", + " # Add the sampled character to our output\n", + " out.append(itos[ix])\n", + " \n", + " # Stop when we generate an end marker\n", + " if ix == 0:\n", + " break\n", + " \n", + " print(f\"{i+1}. {''.join(out)}\")" + ] + }, + { + "cell_type": "markdown", + "id": "108", + "metadata": {}, + "source": [ + "### Conclusion\n", + "\n", + "We've successfully implemented a neural network that performs on par with the bigram model approach.\n", + "While both achieve similar results at this stage, they differ fundamentally in their approach:\n", + "\n", + "- The bigram model explicitly counts and stores character transitions\n", + "- Our neural network learns weights that implicitly represent these same patterns\n", + "\n", + "Looking at our generated names `(\"ryoei\", \"telon\", \"e\", \"mfoman\", \"ylx\")`, we can see that the results are still quite rudimentary.\n", + "Some names are implausibly short, while others contain unusual character combinations that don't appear in natural language.\n", + "\n", + "**Why?** Our simple neural network is still limited by the same constraints as the bigram model: it only looks at the previous character when predicting the next one.\n", + "This means it can't really capture longer patterns or dependencies in the data.\n", + "\n", + "The exciting part is that this is just the beginning.\n", + "Unlike the bigram model, our neural network architecture is highly extensible:\n", + "\n", + "1. We can add more layers to create deeper representations\n", + "2. We can modify the network to consider multiple previous characters\n", + "3. We can increase the number of neurons to capture more complex patterns\n", + "\n", + "In the following parts, we'll explore these extensions, gradually building toward more sophisticated architectures like transformers, the foundation of modern language models." + ] + }, + { + "cell_type": "markdown", + "id": "109", + "metadata": {}, + "source": [ + "## Exercises\n", + "\n", + "In this section, there are a few *proposed* exercises on going a step further than what we did.\n", + "These exercises are **just suggestions** that will challenge what we learned.\n", + "\n", + "If you don't quite know where to start, that's fine: there's a lot to digest in this notebook, so feel free to come back once you're comfortable with the material shown above.\n", + "\n", + "You can find some *proposed* solutions in the [companion notebook](./extra/32_language_modeling_1_solutions.ipynb)." + ] + }, + { + "cell_type": "markdown", + "id": "110", + "metadata": {}, + "source": [ + "### 1. Build a Trigram model\n", + "\n", + "Train a trigram language model, i.e. a model that takes **two** characters as an input to predict the 3rd one.\n", + "Feel free to use either counting or a neural net.\n", + "Evaluate the loss.\n", + "\n", + "1. Did it improve over a bigram model?\n", + "2. If yes, how much did it improve?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "111", + "metadata": {}, + "outputs": [], + "source": [ + "# Set training device\n", + "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n", + "\n", + "# Load dataset\n", + "words = open('data/names.txt', 'r').read().splitlines()\n", + "g = torch.Generator(device=device).manual_seed(2147483647)\n", + "\n", + "chars = sorted(list(set(''.join(words))))\n", + "stoi = {s:i+1 for i,s in enumerate(chars)}\n", + "stoi['.'] = 0 # Special token has position zero\n", + "itos = {i:s for s,i in stoi.items()}\n", + "\n", + "# TODO: Modify this to accomodate for trigrams\n", + "for w in words[:1]:\n", + " chs = ['.'] + list(w) + ['.']\n", + " for ch1, ch2 in zip(chs, chs[1:]): # Two char 'sliding-window'\n", + " print(ch1, ch2)\n", + "\n", + "# TODO: Implement a Trigram model" + ] + }, + { + "cell_type": "markdown", + "id": "112", + "metadata": {}, + "source": [ + "### 2. Split the dataset\n", + "\n", + "Split the dataset randomly into $80\\%$ `train` set, $10\\%$ `dev` set, $10\\%$ `test` set.\n", + "Train the bigram (and/or trigram) model **only** on the `train` set.\n", + "Evaluate them on `dev` and `test` sets. \n", + "\n", + "What can you see?\n", + "\n", + "**Hint:** Have a look at [`torch.randperm`](https://docs.pytorch.org/docs/main/generated/torch.randperm.html)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "113", + "metadata": {}, + "outputs": [], + "source": [ + "g = torch.Generator(device=device).manual_seed(2147483647)" + ] + }, + { + "cell_type": "markdown", + "id": "114", + "metadata": {}, + "source": [ + "#### Bigram model baseline\n", + "\n", + "Let's see first what happens when we train the Bigram model on a fraction of the data, then evaluate the model on the `dev` and `test` sets." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "115", + "metadata": {}, + "outputs": [], + "source": [ + "# Create set of all *bigrams*\n", + "xs, ys = [], []\n", + "\n", + "for w in words:\n", + " chs = ['.'] + list(w) + ['.']\n", + " for ch1, ch2 in zip(chs, chs[1:]):\n", + " xs.append(stoi[ch1])\n", + " ys.append(stoi[ch2])\n", + "\n", + "xs, ys = torch.tensor(xs), torch.tensor(ys) # [196113], [196113]\n", + "num_x, num_y = xs.nelement(), ys.nelement()\n", + "\n", + "# TODO: Shuffle/Permute the dataset, keeping pairs in sync\n", + "# TODO: Split the dataset into 80:10:10 for train:valid:test\n", + "xs_bi_train, xs_bi_valid, xs_bi_test = None, None, None\n", + "ys_bi_train, ys_bi_valid, ys_bi_test = None, None, None" + ] + }, + { + "cell_type": "markdown", + "id": "116", + "metadata": {}, + "source": [ + "#### Compare the Bigram and Trigram model\n", + "\n", + "If you have worked out the Trigram model, you should probably compare the two to see if there's any improvement." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "117", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "# TODO: Create set of all *trigrams*\n", + "xs, ys = [], []\n", + "\n", + "# TODO: Shuffle/Permute the dataset, keeping (x,y) pairs in sync\n", + "# TODO: Split the dataset into 80:10:10 for train:valid:test\n", + "xs_tri_train, xs_tri_valid, xs_tri_test = None, None, None\n", + "ys_tri_train, ys_tri_valid, ys_tri_test = None, None, None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "118", + "metadata": {}, + "outputs": [], + "source": [ + "# TODO: Implement and train a trigram model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "119", + "metadata": {}, + "outputs": [], + "source": [ + "# TODO: Evaluate the trigram model on the validation and test sets" + ] + }, + { + "cell_type": "markdown", + "id": "120", + "metadata": {}, + "source": [ + "### 3. Change the loss function\n", + "\n", + "Instead of using the negative log-likelihood, look up and use `F.cross_entropy` instead.\n", + "You should achieve the same result.\n", + "Can you think of why we'd prefer to use `F.cross_entropy` instead?\n", + "\n", + "Here's the [documentation on `F.cross_entropy`](https://pytorch.org/docs/stable/generated/torch.nn.functional.cross_entropy.html)." + ] + } + ], + "metadata": { + "jupytext": { + "formats": "ipynb,py:percent" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/data/lm/names.txt b/data/lm/names.txt new file mode 100644 index 00000000..0b744099 --- /dev/null +++ b/data/lm/names.txt @@ -0,0 +1,32033 @@ +emma +olivia +ava +isabella +sophia +charlotte +mia +amelia +harper +evelyn +abigail +emily +elizabeth +mila +ella +avery +sofia +camila +aria +scarlett +victoria +madison +luna +grace +chloe +penelope +layla +riley +zoey +nora +lily +eleanor +hannah +lillian +addison +aubrey +ellie +stella +natalie +zoe +leah +hazel +violet +aurora +savannah +audrey +brooklyn +bella +claire +skylar +lucy +paisley +everly +anna +caroline +nova +genesis +emilia +kennedy +samantha +maya +willow +kinsley +naomi +aaliyah +elena +sarah +ariana +allison +gabriella +alice +madelyn +cora +ruby +eva +serenity +autumn +adeline +hailey +gianna +valentina +isla +eliana +quinn +nevaeh +ivy +sadie +piper +lydia +alexa +josephine +emery +julia +delilah +arianna +vivian +kaylee +sophie +brielle +madeline +peyton +rylee +clara +hadley +melanie +mackenzie +reagan +adalynn +liliana +aubree +jade +katherine +isabelle +natalia +raelynn +maria +athena +ximena +arya +leilani +taylor +faith +rose +kylie +alexandra +mary +margaret +lyla +ashley +amaya +eliza +brianna +bailey +andrea +khloe +jasmine +melody +iris +isabel +norah +annabelle +valeria +emerson +adalyn +ryleigh +eden +emersyn +anastasia +kayla +alyssa +juliana +charlie +esther +ariel +cecilia +valerie +alina +molly +reese +aliyah +lilly +parker +finley +morgan +sydney +jordyn +eloise +trinity +daisy +kimberly +lauren +genevieve +sara +arabella +harmony +elise +remi +teagan +alexis +london +sloane +laila +lucia +diana +juliette +sienna +elliana +londyn +ayla +callie +gracie +josie +amara +jocelyn +daniela +everleigh +mya +rachel +summer +alana +brooke +alaina +mckenzie +catherine +amy +presley +journee +rosalie +ember +brynlee +rowan +joanna +paige +rebecca +ana +sawyer +mariah +nicole +brooklynn +payton +marley +fiona +georgia +lila +harley +adelyn +alivia +noelle +gemma +vanessa +journey +makayla +angelina +adaline +catalina +alayna +julianna +leila +lola +adriana +june +juliet +jayla +river +tessa +lia +dakota +delaney +selena +blakely +ada +camille +zara +malia +hope +samara +vera +mckenna +briella +izabella +hayden +raegan +michelle +angela +ruth +freya +kamila +vivienne +aspen +olive +kendall +elaina +thea +kali +destiny +amiyah +evangeline +cali +blake +elsie +juniper +alexandria +myla +ariella +kate +mariana +lilah +charlee +daleyza +nyla +jane +maggie +zuri +aniyah +lucille +leia +melissa +adelaide +amina +giselle +lena +camilla +miriam +millie +brynn +gabrielle +sage +annie +logan +lilliana +haven +jessica +kaia +magnolia +amira +adelynn +makenzie +stephanie +nina +phoebe +arielle +evie +lyric +alessandra +gabriela +paislee +raelyn +madilyn +paris +makenna +kinley +gracelyn +talia +maeve +rylie +kiara +evelynn +brinley +jacqueline +laura +gracelynn +lexi +ariah +fatima +jennifer +kehlani +alani +ariyah +luciana +allie +heidi +maci +phoenix +felicity +joy +kenzie +veronica +margot +addilyn +lana +cassidy +remington +saylor +ryan +keira +harlow +miranda +angel +amanda +daniella +royalty +gwendolyn +ophelia +heaven +jordan +madeleine +esmeralda +kira +miracle +elle +amari +danielle +daphne +willa +haley +gia +kaitlyn +oakley +kailani +winter +alicia +serena +nadia +aviana +demi +jada +braelynn +dylan +ainsley +alison +camryn +avianna +bianca +skyler +scarlet +maddison +nylah +sarai +regina +dahlia +nayeli +raven +helen +adrianna +averie +skye +kelsey +tatum +kensley +maliyah +erin +viviana +jenna +anaya +carolina +shelby +sabrina +mikayla +annalise +octavia +lennon +blair +carmen +yaretzi +kennedi +mabel +zariah +kyla +christina +selah +celeste +eve +mckinley +milani +frances +jimena +kylee +leighton +katie +aitana +kayleigh +sierra +kathryn +rosemary +jolene +alondra +elisa +helena +charleigh +hallie +lainey +avah +jazlyn +kamryn +mira +cheyenne +francesca +antonella +wren +chelsea +amber +emory +lorelei +nia +abby +april +emelia +carter +aylin +cataleya +bethany +marlee +carly +kaylani +emely +liana +madelynn +cadence +matilda +sylvia +myra +fernanda +oaklyn +elianna +hattie +dayana +kendra +maisie +malaysia +kara +katelyn +maia +celine +cameron +renata +jayleen +charli +emmalyn +holly +azalea +leona +alejandra +bristol +collins +imani +meadow +alexia +edith +kaydence +leslie +lilith +kora +aisha +meredith +danna +wynter +emberly +julieta +michaela +alayah +jemma +reign +colette +kaliyah +elliott +johanna +remy +sutton +emmy +virginia +briana +oaklynn +adelina +everlee +megan +angelica +justice +mariam +khaleesi +macie +karsyn +alanna +aleah +mae +mallory +esme +skyla +madilynn +charley +allyson +hanna +shiloh +henley +macy +maryam +ivanna +ashlynn +lorelai +amora +ashlyn +sasha +baylee +beatrice +itzel +priscilla +marie +jayda +liberty +rory +alessia +alaia +janelle +kalani +gloria +sloan +dorothy +greta +julie +zahra +savanna +annabella +poppy +amalia +zaylee +cecelia +coraline +kimber +emmie +anne +karina +kassidy +kynlee +monroe +anahi +jaliyah +jazmin +maren +monica +siena +marilyn +reyna +kyra +lilian +jamie +melany +alaya +ariya +kelly +rosie +adley +dream +jaylah +laurel +jazmine +mina +karla +bailee +aubrie +katalina +melina +harlee +elliot +hayley +elaine +karen +dallas +irene +lylah +ivory +chaya +rosa +aleena +braelyn +nola +alma +leyla +pearl +addyson +roselyn +lacey +lennox +reina +aurelia +noa +janiyah +jessie +madisyn +saige +alia +tiana +astrid +cassandra +kyleigh +romina +stevie +haylee +zelda +lillie +aileen +brylee +eileen +yara +ensley +lauryn +giuliana +livia +anya +mikaela +palmer +lyra +mara +marina +kailey +liv +clementine +kenna +briar +emerie +galilea +tiffany +bonnie +elyse +cynthia +frida +kinslee +tatiana +joelle +armani +jolie +nalani +rayna +yareli +meghan +rebekah +addilynn +faye +zariyah +lea +aliza +julissa +lilyana +anika +kairi +aniya +noemi +angie +crystal +bridget +ari +davina +amelie +amirah +annika +elora +xiomara +linda +hana +laney +mercy +hadassah +madalyn +louisa +simone +kori +jillian +alena +malaya +miley +milan +sariyah +malani +clarissa +nala +princess +amani +analia +estella +milana +aya +chana +jayde +tenley +zaria +itzayana +penny +ailani +lara +aubriella +clare +lina +rhea +bria +thalia +keyla +haisley +ryann +addisyn +amaia +chanel +ellen +harmoni +aliana +tinsley +landry +paisleigh +lexie +myah +rylan +deborah +emilee +laylah +novalee +ellis +emmeline +avalynn +hadlee +legacy +braylee +elisabeth +kaylie +ansley +dior +paula +belen +corinne +maleah +martha +teresa +salma +louise +averi +lilianna +amiya +milena +royal +aubrielle +calliope +frankie +natasha +kamilah +meilani +raina +amayah +lailah +rayne +zaniyah +isabela +nathalie +miah +opal +kenia +azariah +hunter +tori +andi +keily +leanna +scarlette +jaelyn +saoirse +selene +dalary +lindsey +marianna +ramona +estelle +giovanna +holland +nancy +emmalynn +mylah +rosalee +sariah +zoie +blaire +lyanna +maxine +anais +dana +judith +kiera +jaelynn +noor +kai +adalee +oaklee +amaris +jaycee +belle +carolyn +della +karter +sky +treasure +vienna +jewel +rivka +rosalyn +alannah +ellianna +sunny +claudia +cara +hailee +estrella +harleigh +zhavia +alianna +brittany +jaylene +journi +marissa +mavis +iliana +jurnee +aislinn +alyson +elsa +kamiyah +kiana +lisa +arlette +kadence +kathleen +halle +erika +sylvie +adele +erica +veda +whitney +bexley +emmaline +guadalupe +august +brynleigh +gwen +promise +alisson +india +madalynn +paloma +patricia +samira +aliya +casey +jazlynn +paulina +dulce +kallie +perla +adrienne +alora +nataly +ayleen +christine +kaiya +ariadne +karlee +barbara +lillianna +raquel +saniyah +yamileth +arely +celia +heavenly +kaylin +marisol +marleigh +avalyn +berkley +kataleya +zainab +dani +egypt +joyce +kenley +annabel +kaelyn +etta +hadleigh +joselyn +luella +jaylee +zola +alisha +ezra +queen +amia +annalee +bellamy +paola +tinley +violeta +jenesis +arden +giana +wendy +ellison +florence +margo +naya +robin +sandra +scout +waverly +janessa +jayden +micah +novah +zora +ann +jana +taliyah +vada +giavanna +ingrid +valery +azaria +emmarie +esperanza +kailyn +aiyana +keilani +austyn +whitley +elina +kimora +maliah +paityn +evalyn +luz +nathalia +winnie +chandler +ciara +danica +nailah +rilynn +adilynn +brenda +dixie +kassandra +raylee +salem +abril +desiree +farrah +nathaly +robyn +carla +bryleigh +kaya +yasmin +angelique +emilie +kaylynn +emerald +indie +tara +alisa +ayva +denver +eleanora +jaylynn +sarahi +aadhya +cordelia +jovie +marlowe +zion +aranza +breanna +kailee +magdalena +spencer +ayana +elodie +emiliana +dalia +flora +harriet +karlie +kenya +aminah +mattie +montserrat +zendaya +ainhoa +cherish +lilia +sonia +joslyn +arleth +fallon +renee +carlee +denise +mercedes +nellie +carina +jessa +kaisley +persephone +riya +saanvi +tegan +susan +honesty +melania +milah +brenna +freyja +loretta +kamari +kristina +libby +selina +violette +ayanna +jaida +malayah +marcella +sevyn +tabitha +lizbeth +seraphina +anniston +anabella +aryanna +lianna +monserrat +caylee +mariyah +theresa +zayla +aliah +aubri +cleo +kyndall +luisa +carsyn +evalynn +halo +zoya +angeline +shayla +addalyn +jenny +mireya +rae +amya +elia +mollie +rosalina +sharon +betty +miya +sidney +aarya +araceli +aspyn +viola +akira +alaiya +diamond +micaela +raya +blessing +jaylani +madyson +rowyn +kensington +maddie +majesty +maylee +aila +heather +julianne +loyalty +kinzley +neveah +raylynn +beatrix +darcy +hensley +leena +jaylin +cambria +everley +leilany +patience +caitlyn +carson +finnley +marjorie +sapphire +cristina +dara +elayna +inaaya +katerina +kylah +melani +oakleigh +aryana +audrina +devyn +rylynn +vivianna +alissa +dalilah +ireland +lorena +elin +ivana +lilyanna +moriah +asha +campbell +courtney +janae +kaelynn +kynslee +nyomi +anabelle +litzy +alyvia +leilah +natalee +prisha +rhylee +agnes +briley +kasey +leela +shea +antonia +marian +sally +vivien +yaritza +annette +evelina +kamora +lakelyn +lenora +meera +celina +ida +karma +lesly +aimee +diya +kristen +rayleigh +ripley +adela +carlie +janiya +noel +samiyah +skylynn +adilene +araya +charity +charlize +jasmin +audriana +harlyn +iyla +maisyn +rowen +soraya +addalynn +baylor +clover +katelynn +isadora +rita +vayda +addie +amal +karmen +kaycee +malka +rosalind +amilia +capri +elissa +cassie +georgina +ila +liah +quincy +asia +bernadette +mariella +navy +nayla +roxanne +shanaya +ally +karleigh +khari +kinsleigh +alaysia +darla +jordynn +tallulah +ayah +drew +marceline +brayleigh +emberlynn +farah +gisselle +gwyneth +makena +tess +annelise +beverly +layan +maryjane +noah +rebeca +siya +emmalee +lindsay +mika +aida +brynley +elara +ellery +jael +journei +keziah +skylah +abrielle +amarah +andie +ariadna +ashton +mckayla +stacy +audra +bayleigh +kaleigh +kamille +khadija +xena +anita +havana +imogen +jubilee +khalani +birdie +cindy +kalia +karis +alex +bryn +ziva +amiah +amyra +artemis +dania +indigo +jamila +macey +maisy +naila +sia +vida +yuliana +amethyst +ashtyn +eliyanah +kamilla +nyra +zyla +danika +emberlee +pyper +rhyan +roslyn +ruthie +zella +caitlin +irie +jocelynn +kelsie +shay +tyler +yazmin +aarna +abbigail +ameera +daenerys +emani +emeri +lincoln +londynn +lucie +margaux +martina +rihanna +temperance +althea +journie +marin +marlene +rubi +ashanti +carleigh +christiana +elisha +sanaa +belinda +chiara +laken +nori +silvia +tania +arie +delia +dina +elinor +emberlyn +emrie +grecia +krystal +regan +theodora +zadie +zaya +emi +sofie +vivianne +delanie +janet +roselynn +carmella +elowen +korra +marigold +alessa +aubrianna +dawsyn +geneva +soleil +tia +zaina +eisley +emry +essence +inaya +kaira +linnea +susanna +colbie +janice +natalya +sailor +brinlee +gracyn +kyrie +winifred +yasmine +america +brynnlee +carley +coral +gentry +guinevere +joey +kailynn +kaleah +kayden +adalie +adalina +addelyn +adilyn +akshara +annabeth +ayesha +ela +kamiya +laikyn +maelynn +merritt +reya +shirley +yuna +zahara +kahlani +lillyanna +aislynn +ananya +billie +elowyn +jacquelyn +jaleah +nadine +raleigh +rhiannon +shannon +tamia +dalila +evangelina +harlie +ira +kalina +laylani +maple +noella +reece +renesmee +damaris +deanna +jazmyn +khalia +marlie +murphy +preslee +sherlyn +blayke +jaclyn +larissa +mayra +memphis +rosalynn +taryn +taya +beatriz +gitty +isabell +jude +sahana +zinnia +anayah +bentley +cielo +giada +katrina +love +lucero +saniya +ailyn +cambrie +jersey +kaci +kalea +kiley +letty +petra +shania +amariah +bryanna +cecily +elouise +judy +kacey +kaidence +kinlee +kya +maite +nahla +naima +aleigha +annistyn +asiya +atarah +azeneth +estefania +mariela +milania +zia +aadya +dayanna +goldie +jaylen +kenzley +malak +rosalia +sana +anyla +aryah +jolee +lillyana +sanai +zhuri +arizona +dariana +devorah +donna +jazelle +kari +lorraine +samiya +julietta +kayleen +lela +lori +maura +mazie +salome +baila +claira +elana +keila +kinsey +pamela +rori +yaretzy +aanya +analise +annaliese +ariela +haidyn +hartley +isha +katarina +kenzlee +khadijah +laniyah +rain +sol +yesenia +zaynab +darlene +elly +elyana +marion +moira +symphony +alba +kaley +marcela +miyah +nyah +annaleigh +brighton +chevelle +esmae +italy +izabelle +jazzlyn +johana +lailani +pepper +taytum +bree +haddie +klara +leticia +lucinda +tala +ziya +aleyna +avani +calista +camden +edie +haleigh +karley +kaylen +priya +reem +ayvah +destinee +kynleigh +malina +may +raeleigh +suri +adina +austin +berklee +camdyn +cori +kaila +keren +kinleigh +tianna +tilly +yusra +emmi +fern +gianni +liza +makiyah +sterling +zaira +aylah +eunice +lakyn +raine +wilhelmina +daria +kacie +lidia +ridley +brisa +constance +ema +ines +jamiyah +leora +maiya +maritza +nicolette +tina +amberly +calla +dominique +faigy +inara +izzabella +janie +juana +lois +magdalene +rosemarie +safa +sonya +valencia +yvette +aiza +arwen +audrianna +graciela +heidy +hollis +janyla +sahara +teigan +adira +areli +aura +haylie +leylani +rian +stormi +yasmeen +abriella +anneliese +geraldine +hollyn +jakayla +abbie +ameerah +aviva +bennett +eleni +joan +karly +mayah +millicent +nechama +noelia +violetta +arabelle +aubriana +avalon +edna +ellia +jianna +kaylyn +layna +noelani +santana +britney +emme +eryn +ester +gaia +giulia +jacey +janiah +jaslyn +jaylyn +karmyn +kyah +liya +lizeth +nila +nya +ocean +saphira +solana +toni +venus +aracely +avril +carmela +carrie +kenzi +khali +lilyann +marielle +yamila +yvonne +alanah +aoife +avaya +azul +berkeley +denisse +grayson +kamdyn +melinda +susana +zarah +alaiyah +arlene +carol +cattleya +katy +kenleigh +lettie +nariah +niya +ramsey +shaylee +tamara +unique +adaleigh +bowie +estefany +gina +josephina +kianna +lexa +montana +rachael +sanaya +aiyanna +amyah +ayra +blakelyn +charlene +doris +irina +jovi +kamya +kelani +kelsi +maribel +maryn +precious +alayla +anaiah +anissa +avalee +cosette +fatimah +hudson +karissa +karli +katia +kodi +milagros +odessa +presleigh +shyla +taelyn +tahlia +verity +ali +bellarose +cooper +elliette +hawa +juno +kaitlynn +kinzlee +leen +lottie +miabella +navya +sarina +yoselin +amor +carli +hafsa +janelly +jaya +lula +mari +samaira +shae +shoshana +sybil +adah +empress +harlynn +jalayah +lacy +milly +mona +ryder +yarely +arrow +coralie +dianna +eiza +izabel +leigha +margarita +novaleigh +rebel +yael +zaniya +aditi +aniston +audree +caydence +evalina +glory +iva +karoline +kenslee +kynzlee +lakelynn +shreya +stormy +taliah +theia +xochitl +zayda +anylah +cheyanne +elani +eliora +gwenyth +hailie +harmonie +karolina +lanie +raizy +rivky +yamilet +anabel +aveline +camellia +eleanore +honor +kingsley +landyn +lynlee +marli +nariyah +agatha +blanca +emeline +ileana +ivey +kaliah +kavya +loren +mariajose +maryann +oriana +romy +sabina +serafina +tesla +alyna +amila +angely +arlet +caliyah +delta +emmerson +finleigh +jia +jiselle +lavender +lotus +maddox +paulette +rania +rochel +westlyn +xyla +analeah +aubreigh +dawn +georgiana +harlem +isa +jannat +jhene +laine +lillyann +melia +roxana +taylin +yaneli +zamira +amaria +caleigh +dafne +iyanna +jules +kendal +lyrica +marlo +mylee +nelly +star +amarie +aribella +carissa +emarie +emelyn +hayleigh +kelis +lillith +maizie +maliya +misha +naia +odette +samia +zemira +alara +anjali +blythe +bridgette +dailyn +dawson +emmaleigh +indiana +ivanka +jailyn +larkin +lucianna +maelyn +mindy +nirvana +wyatt +zamora +zayna +adleigh +aliyana +annmarie +ellisyn +finlee +gretchen +jackie +kayley +miller +niyah +prudence +sheila +taniyah +winona +yolanda +alyse +armoni +dayra +desire +echo +ever +evolet +jiya +laya +louella +lux +marianne +mariel +mayla +mckinlee +naveah +pia +pippa +teegan +asma +ayat +charleston +chasity +haniya +kailany +kyndal +lacie +nahomi +rosalinda +adelyne +amoura +betsy +braylynn +grettel +harleen +kennadi +marwa +mildred +sahasra +skylee +storm +swara +zailey +aahana +adalind +ashly +chava +clarke +jamya +lua +mayte +peighton +raelee +rosabella +shayna +susie +viktoria +aleia +avaleigh +blakeley +cambree +deja +emalyn +emoni +gisele +kambree +lourdes +lynleigh +malky +adelia +arayah +brookelynn +desirae +eliette +elysia +eris +fabiola +isela +kathy +kourtney +kynsley +maelee +mileena +ysabella +afton +ahana +anaiyah +anvi +avia +colleen +evan +flor +indy +jannah +joana +joanne +joslynn +luana +luca +neriah +neva +rena +rilee +stormie +alyanna +aruna +batsheva +cienna +cristal +darby +divine +huda +keegan +mackenna +marlow +roxanna +taraji +acacia +adlee +anisa +annalia +anora +collette +danae +estela +gillian +greer +isobel +jacklyn +jaina +josey +kirsten +laia +nour +paxton +philomena +roselyne +samaya +yana +alanis +arianny +delylah +emmersyn +jaqueline +kendyl +kenlee +leanne +liyana +manuela +aarohi +amerie +ania +aries +iman +ivette +keely +khloee +maylin +melodie +merida +miliana +ria +safiya +sheyla +sumaya +tanvi +zipporah +ahuva +harmonee +jupiter +karely +kiersten +laina +lane +liyah +raniyah +samarah +tillie +aaradhya +ailany +analy +brystol +cameran +eila +ellington +halima +italia +janylah +layne +lluvia +sullivan +wesley +abella +ameena +anaisha +anvika +avigail +christian +elli +jaycie +klynn +nuri +rylei +tayla +ainara +aja +alya +aylani +azlynn +bethel +ellarose +emori +jaci +jesse +joi +justine +kaniyah +leni +maven +minerva +mirabelle +stephany +yehudis +zylah +abigale +adalia +aeris +annalyse +ariyanna +asiyah +devin +harbor +iyana +jayne +layah +legend +linden +navi +nikki +norma +ravyn +rylin +sama +shyanne +tasneem +triniti +alyana +anderson +audrie +avamarie +aylen +aziyah +brexley +coralee +everest +everlie +fatoumata +hermione +janna +justyce +laynie +legaci +lenna +liz +malena +marguerite +moana +perry +railynn +rileigh +shaindy +terra +tiara +true +xitlali +yocheved +yulissa +zari +zelie +zofia +adella +adrian +adriel +alonna +annamarie +avonlea +ayda +brea +corina +dasha +denim +emorie +eternity +gracen +issabella +keeley +kensleigh +kiya +loralei +makinley +malika +marlena +nella +olyvia +paizley +razan +saira +sandy +selma +sora +tracy +trisha +winry +amiracle +analeigh +baileigh +cassia +channing +deasia +denali +draya +effie +emmylou +inez +jamiya +kalli +kerrigan +khelani +maddilyn +nava +primrose +reva +rio +rosaleigh +ryley +taelynn +yuri +aaleyah +brigitte +cayla +debora +hayven +hellen +jailyne +jalani +jalaya +jeanette +jensen +jream +kayli +krista +onyx +oona +sonja +stacey +sury +veronika +asa +daylin +eowyn +jaidyn +jean +joann +kyrah +mahogany +ollie +rahma +rosario +sade +sequoia +stori +valkyrie +adora +anaiya +ariyana +beckett +briseis +citlali +emryn +francis +hindy +ilana +kenzleigh +kiyah +lexington +maddyn +maira +mason +nayomi +ofelia +priscila +serene +story +amen +annalisa +annalynn +arina +charlette +connie +dora +hennessy +jacelyn +jaime +joella +kambrie +klaire +lani +luci +rahaf +rayah +rooney +shaniyah +yatziri +zena +avayah +caia +danni +dua +emberleigh +huntleigh +ivie +jamia +jamilah +jaslynn +kaily +kamaya +kylynn +lovely +paizlee +reilly +royce +scottie +sunshine +timber +tru +abrianna +ambar +analiyah +berenice +brigid +candice +diane +hayes +jahzara +kalliope +krisha +lynn +mayeli +nell +renley +royale +taylee +wrenley +zaida +zoelle +aariyah +abagail +adria +aislyn +annemarie +auri +avarie +brynnley +christy +daniyah +eliyah +emilyn +evianna +hendrix +isra +izzy +kierra +kyler +laci +laiyah +lexy +lupita +mallorie +mishka +nahomy +olympia +rocio +sianna +zaniah +ziyah +abygail +adyson +arantza +aseel +bryce +catarina +charis +ellyana +hollie +jayna +josslyn +keiry +kelsea +khaliyah +kristine +lynnlee +manha +melisa +nichole +rina +skarlett +sparrow +tamar +aaria +adalynne +alaska +amaira +aminata +analee +aniylah +arlo +asher +dayanara +ilyana +israel +jesslyn +josefina +josselyn +kamiah +linley +maddilynn +maeva +maizy +maycee +nalah +savanah +therese +uma +zamiyah +aleyah +amaryllis +auria +brianne +caliana +calli +eimy +elliotte +elyza +grey +iona +iqra +jesiah +juanita +karson +kaylah +mabry +mariama +monique +neve +niah +philippa +rachelle +sabella +taleah +tanya +abilene +ainslee +aleyda +anali +brylie +brynna +cailyn +chyna +daliyah +emmarose +evelin +everett +gizelle +hanan +hosanna +irelynn +ishika +islah +izabela +jaiden +janney +jasleen +kynnedi +magaly +makenzi +malaika +maricela +minnie +payten +randi +rey +shira +snow +talya +zariya +aavya +abbey +acelynn +ani +aniah +aryn +aulani +bracha +brenley +elif +embry +emmanuella +henrietta +ina +isley +jermani +kaitlin +kalena +katana +kristin +kyle +layana +lynette +madina +malinda +mandy +marbella +miamor +raylin +romi +scotlyn +toby +yadira +yohana +allisson +amyrah +anabia +anayeli +annastasia +atalie +avni +bernice +blakelee +blakeleigh +brandy +brie +chole +devora +evelynne +haya +heiress +jackeline +kamia +kenzlie +landree +leiah +liora +marta +meara +sabine +violett +wednesday +yitty +adalyne +aleksandra +allana +anisha +anistyn +annaleah +atlas +aven +bronwyn +cameryn +candace +charly +charm +chelsey +fallyn +jenelle +kaliana +kay +kiah +kollins +lulu +maleni +maris +marla +maylani +mei +nessa +october +sariya +savana +sedona +thaily +zayleigh +zuleyka +adara +advika +ahlani +aisley +aiyla +akari +alea +alyza +amoni +andromeda +ara +auden +berlin +blakelynn +calleigh +damiyah +elisheva +ellowyn +gema +janaya +jazleen +jemima +jessi +joni +kambri +lavinia +reema +rosanna +samirah +sanvi +shaina +starr +susannah +talitha +taylynn +teyana +vania +zarina +zoee +aashvi +acadia +amore +anari +arleen +azariyah +bobbie +braylin +coco +emree +ericka +evalee +goddess +jayce +kalila +kensli +kloe +laiken +lesley +maverick +maxwell +meira +pauline +rozlyn +sapphira +sidra +vaida +zemirah +adelynne +adrielle +annabell +averee +catalaya +cayleigh +chimamanda +delani +destini +eviana +goldy +irelyn +janeth +jentry +kaelani +kaiyah +keyli +landon +laynee +lilyanne +nilah +rayven +riyan +samaria +skylin +aaryn +aira +alona +anastacia +aryia +aziza +bodhi +carys +dasia +dorothea +fiorella +georgie +ginger +harlowe +jaela +janai +jayleigh +joseline +landrie +laniya +leana +leonie +mayleigh +nika +noura +nyasia +rosy +roxy +ryanne +sakura +serayah +sereniti +shaniya +shriya +simona +skai +tova +victory +addelynn +aleeza +alysson +ameliah +arlett +avelyn +brandi +camari +cerenity +chesney +devon +dottie +eira +elaya +eloisa +gittel +jadore +jenevieve +kaleia +katheryn +kitana +lenore +loxley +lyrik +mahira +maleigha +myka +navaeh +nayely +polina +ruhi +taylen +unknown +vianney +yahaira +aalayah +aleen +amairany +anslee +aris +arisbeth +atalia +averly +brailynn +cheryl +corrine +dynasty +elyssa +emalee +fannie +francine +hayzel +honesti +jalynn +jasmyn +kendalyn +kit +layken +letti +roberta +sena +zyra +adelaida +adhya +analiah +annalyn +antoinette +avionna +avyanna +azuri +breelyn +jamiah +jaziyah +kahlia +kaiah +kalayah +kamaria +katharine +kayliana +kynsleigh +laurie +leiana +leonora +lindy +max +rosella +roya +ryah +sydnee +symone +aella +aizah +alizah +atara +augusta +bobbi +brilynn +brynnleigh +camiyah +chase +crimson +devina +ellee +emaline +emelie +emsley +honey +jadyn +jaiyana +jessalyn +journii +juliett +kateri +keylin +khushi +korie +laikynn +lariah +lora +marlen +moxie +nazareth +nikita +niomi +novalynn +rikki +seven +sinai +skylyn +skyy +sunnie +syeda +adaly +adelle +alijah +annora +arianne +ayven +bayley +bexlee +bostyn +brittney +cianna +coralynn +dakotah +edyn +emalynn +emmanuelle +ezri +ily +ishani +janine +jessenia +jewels +joleigh +kalaya +kameron +kassie +kenadee +kymber +laela +lilli +marisa +naylani +nubia +phoenyx +rana +rayla +raylyn +roxie +saya +silvana +sirena +suzanne +xenia +adia +aleeyah +aleida +allegra +aly +analicia +arwa +ashleigh +austen +brailey +cami +cattaleya +chany +dariyah +dayna +dolly +eldana +emmery +evette +gianella +haislee +hala +illiana +isis +jaide +jailynn +jolynn +julieth +kalynn +karime +katya +kezia +lark +lili +mai +marlei +mayar +meila +mulan +mylie +neela +nura +pessy +rayan +sephora +tenzin +tirzah +vail +weslyn +zaliyah +abigayle +alaa +alaynah +aleina +alexandrea +alize +alyce +alysia +amaiya +amariana +astraea +aurielle +aveah +betsabe +brady +daya +dinah +divya +elanor +emaan +eman +emersen +eshaal +haizley +halia +huntley +irma +issa +itzae +jacie +jakiyah +jelena +jessy +joie +jordin +josette +karisma +kattaleia +khole +leann +leya +lillyan +madelin +makaylah +nada +nadya +raizel +renae +samya +stefany +suzanna +tanner +tayler +tommie +tyra +wilder +wynn +zya +zyana +acelyn +adaya +adore +alanie +ashlee +avila +azra +becca +breckyn +brilee +charolette +cierra +demetria +divina +easton +elvira +elyanna +gigi +indi +jameson +jania +jasper +jazzlynn +kambria +kaylene +kolbie +kylin +lainee +lariyah +levi +maha +milla +miraya +novella +olga +praise +rilyn +ryla +sima +sonora +taleen +una +xitlaly +zayah +aicha +aliviah +amie +anamaria +anasofia +avary +avie +bea +blessyn +blossom +briseida +carmyn +caterina +citlaly +danya +debra +ellamae +erianna +evanna +ezlyn +hazley +jariah +jariyah +jennah +justina +kami +kyara +layton +lilyan +maja +nataleigh +novalie +november +polly +rainey +ronnie +safia +stefania +swayze +taniya +vanna +yasmina +zaryah +zaylah +ziah +zulema +aaliya +aanvi +alahni +aleeah +amada +amellia +amorah +amour +annalie +avarose +avi +azalia +azari +beau +brinleigh +britton +cedar +daelyn +darianna +delphine +ellah +ellena +elva +eveline +everlyn +galilee +giulietta +hadiya +havyn +hillary +janely +jozie +kalie +lake +leighla +livi +madden +maddisyn +maliha +mayzie +merci +pandora +rawan +remedy +roma +sahar +suhana +tali +tatianna +whitlee +zakiyah +zamara +zina +alycia +aysha +bentlee +blimy +bradley +carsen +charisma +clarice +clarity +dagny +eevee +evy +giulianna +hadassa +haelyn +hazely +husna +huxley +jaila +kaileigh +kaleigha +kaylanie +kaylei +khloie +khori +kiyomi +korah +koraline +lucca +maeleigh +mahi +mariya +mirielle +myriam +naimah +nami +porter +quinley +saisha +shaelyn +shai +sofiya +suzette +vega +vianna +zeynep +adrianne +alynna +amairani +amyla +anessa +arsema +ayden +brissa +brynlie +cate +christa +daelynn +dillon +emmelyn +gretta +gwenevere +haneen +haylen +holley +jalia +jayme +kaniya +keagan +leonor +leylah +lilliann +madisson +maida +maryanne +meah +meena +melodi +micaiah +morrigan +naiya +nitya +oaklie +paradise +rhyleigh +rorie +rosabelle +shifra +simran +stassi +sunday +teigen +tierney +westlynn +winslow +yazmine +abigael +aina +alaiah +alanni +alise +alysha +amaiyah +amilah +aralyn +astoria +ayala +briseyda +cambri +camreigh +candy +evana +greyson +henlee +hiba +ilah +izel +jacelynn +jeanne +kaislee +kamaiyah +kennady +kimberlyn +kristy +lael +leigh +lively +lizette +mahalia +mirabel +naiomi +naliyah +payson +preslie +rhiley +riverlyn +rosaleen +runa +tatyana +tierra +vanya +abbygail +adamaris +alinah +aloni +anaelle +angelie +anja +baleigh +bayan +beth +bliss +bushra +calia +elliemae +esmee +eugenia +faiga +gladys +gretel +haiden +inayah +jailah +jennie +jodi +kenzy +kimani +kirby +kirra +kyree +leandra +leeann +leyah +lillia +makiah +maylen +minha +myracle +naira +naisha +natali +rafaela +rhoda +riyah +rosaline +rubie +rylen +ryver +sela +shaila +sherry +shivani +shyann +valarie +vanellope +vesper +zada +zaidee +zissy +zori +aislin +alany +aleyza +amaiah +ameya +angelia +arissa +atlee +aubrei +aysel +beautiful +brookelyn +brooks +caelyn +cailey +callan +caraline +carlota +cathy +cayden +corinna +delainey +delany +eesha +eleen +ena +eriana +francisca +hera +hilda +imogene +james +jourdyn +kamyah +kaori +karol +kattaleya +khaliah +lanae +livie +madelyne +mailen +marleny +naomy +nara +raeya +railyn +reeva +rhythm +ronni +saori +saydee +sayuri +shanelle +siobhan +tailynn +vicky +aalia +aashi +aayat +aayla +aela +alahna +aliannah +alinna +alyssia +arlie +auriella +azucena +caris +daleysa +danyla +eleana +eliany +emiko +enslee +jaden +jai +jayci +jodie +jordana +joselin +kaydance +korbyn +kylar +leilanie +lelani +liesel +luiza +maribelle +mckynlee +meher +naylah +paetyn +renly +rumi +rya +ryker +saray +shaelynn +sila +tamiyah +tyanna +vianey +wisdom +zalayah +ailey +alaura +aleeya +alexi +aleya +alyah +amna +arionna +aryiah +avacyn +berkleigh +bianka +brook +cailynn +colby +delila +ebony +eliyana +elleanor +emari +emy +esha +eshal +essie +fynlee +griselda +janette +jaydah +jiana +junia +kaiden +keilany +keisy +keturah +kimberlee +leyna +liara +lielle +makiya +makyla +maloni +maram +maycie +mazikeen +mckinleigh +mirha +muna +myrah +nashla +pilar +raelin +sammie +senna +shalom +sommer +talaya +truly +tyla +veera +weslynn +zahraa +zanyla +zaylynn +zenobia +adhira +alizay +amberlee +ami +an +analisa +anny +ansleigh +ariane +atley +blima +brystal +chanelle +codi +constanza +coralyn +cypress +darci +delina +dylann +evelyne +fayth +gisela +havanna +jamaya +jenavieve +kamani +kamri +katalaya +kenadi +kenslie +keylani +lamya +lian +macee +maizey +marnie +maureen +naomie +nawal +nayelli +oluwadarasimi +ora +paxtyn +raniya +reid +remmi +rochelle +scottlyn +serinity +shylah +siana +sunni +tailyn +tasnim +theadora +tinlee +truth +tylee +valentine +yurani +alayia +alecia +arizbeth +boston +brinkley +callista +chevy +christianna +corrina +deena +eastyn +elianny +elizabella +ellora +erynn +estefani +gabby +genessis +gracey +halley +ishanvi +jadelyn +jalissa +jaylie +jo +jocelyne +kaidyn +kailah +katherin +kenza +khylee +kinzie +lamiyah +laveah +lenox +lexus +lya +lynley +lyriq +marilynn +mathilda +meagan +mela +melrose +mylani +nalia +naylea +niamh +nicolle +perri +rayanna +rogue +salwa +saria +semaj +serah +shia +soha +tariyah +tzipora +zaelynn +aarushi +addy +aletheia +alexus +aline +amyiah +arlyn +bayla +calina +chloee +cing +corrie +darlyn +dearra +defne +evaluna +fabiana +farida +fay +gala +gray +hinda +hudsyn +jaslene +jena +jensyn +jeslyn +keilyn +liviana +maisey +maysa +medina +meela +mera +monet +nadiya +niylah +nizhoni +ryland +saja +samari +sarayah +sicily +skylie +soren +tahiry +vaani +wilma +winsley +yanely +yohanna +yulianna +yuritzi +zaila +zenaida +zyah +zyanna +akasha +akeelah +angeles +aniyla +avagrace +avrie +avyana +azara +baylie +bellah +brelynn +brileigh +britta +bryar +camelia +damiya +daniya +dezire +dia +eleonora +eli +enzley +esty +fatou +felicia +hania +indira +jailee +jayanna +jaziah +jewell +joleen +jory +josalyn +joselynn +kaeleigh +kellie +kimberlynn +klarissa +lelia +liba +lizzie +lou +maahi +mable +malanie +malea +malin +mattison +myasia +mykah +naiara +nohemi +passion +quinnley +raylen +ren +rima +royalti +saraya +scotland +svea +tate +tristan +tyana +yashvi +zailee +zaylie +zelena +zoei +aarvi +airabella +alaynna +alizae +ameenah +amelya +amity +anifer +ariany +athalia +avielle +azaleah +becky +brecklyn +caidence +cailee +caileigh +carolynn +cesia +collyns +cree +dariela +deisy +dena +dolores +ellanor +ellinor +emlyn +era +gloriana +haizlee +hareem +ilaria +imelda +ivonne +jamyla +kaely +kamira +kamry +katalyna +keidy +kelli +kendalynn +kiari +kobi +kollyns +laelah +leeanna +lillianne +lillyanne +lilyrose +lorna +lumen +lynden +maelle +maryama +mecca +nairobi +odalys +paislynn +roux +rowynn +sarayu +silver +sincere +starla +tanisha +teagen +vaeda +yessenia +adalena +adelaine +ahlam +alayiah +alli +amena +amilya +anyah +auburn +avika +aylee +ayomide +azlyn +baker +brenlee +brooklynne +brynne +ciana +cloe +daliah +darya +elianah +eliot +emberley +emmalina +franki +graelyn +grayce +graysen +harlei +harli +ivyanna +jaliah +jonah +juvia +kahlan +kaleena +kalista +karolyn +karsen +kayloni +keisha +kelsy +kensie +kenzington +kiarah +kimberley +kristiana +lakely +laramie +liesl +maebry +malorie +maryah +mehlani +melannie +michal +mihira +milarose +monserrath +mylene +nahiara +neha +noora +ona +perel +raevyn +remie +salina +sayler +seren +shanvi +viridiana +wylie +zakiya +zoha +adelin +ahri +aiden +aiya +alesia +alizabeth +amayra +arin +aviah +barrett +betzabeth +brianny +callahan +chance +christie +cleopatra +desi +eliani +elicia +ellieana +emmalin +evee +frieda +georgette +golden +gracelynne +hadlie +ilianna +jaylanie +jazmyne +kamyla +kensi +keylee +khyla +kim +kynslie +lakota +lamar +lucile +lyndon +lyndsey +madisen +maesyn +mailani +makeda +mea +misty +naydelin +nidhi +phebe +quinnlyn +reaghan +rhema +rosetta +shyloh +sitara +tammy +veyda +via +vittoria +wrenly +xaria +yelitza +zamya +zayra +zerenity +zooey +zyaire +adaley +adison +allena +allura +alvina +alydia +amalie +ammy +amylah +andy +annsley +aster +audri +avelina +avelynn +bentleigh +bexleigh +bibi +blakley +braylyn +brinnley +brooklin +bryelle +camora +carrigan +carrington +chrissy +dalylah +dayla +december +divinity +dorcas +dru +elenora +elizah +ellanora +ellyanna +evaline +everette +everlynn +faiza +giavonna +gisella +imaan +infinity +isamar +jaleigh +julian +kaari +kalyn +kameryn +kaoir +kashvi +keya +keyana +khylie +kylei +lennix +logann +lujain +lumi +magali +makaela +makaila +maleyah +mazzy +melah +meryem +miral +mithra +nihira +nuha +orion +quetzaly +raeann +raeghan +raelynne +rafaella +reed +rivkah +roslynn +safiyyah +september +serina +shaylynn +solara +sydnie +taliya +tamera +venice +verna +yareni +zlata +aaminah +aayra +abriana +aeryn +ailee +airam +aisling +aliyanna +amariyah +amillia +annagrace +aralynn +arley +azura +brailyn +breeze +brienne +bryana +cady +cailin +caitlynn +calie +caylin +celena +cherokee +chloie +clair +cyra +daira +eleyna +elijah +elsy +embree +eulalia +ezlynn +forever +gaby +germani +gionna +golda +harmonii +heavenlee +ilani +jalyssa +javeah +joely +johannah +johnnie +jovanna +joyanna +kamara +kamden +kareena +kaycie +kendyll +keyanna +landri +leilanni +liani +lochlyn +loghan +loryn +lyah +lynnox +mahayla +makynlee +makynzie +malana +marisela +messiah +miangel +miarose +mikah +milagro +milo +minna +mirai +mishika +monika +nandini +naviah +nico +nur +nyssa +odyssey +orianna +peace +raylan +raylene +rei +renesmae +rheya +rhylie +ricki +rinoa +roisin +rosina +rozalyn +rue +sham +shloka +siham +soledad +somaya +sumayyah +sydni +tahira +talayah +taylyn +teaghan +thora +torri +wynne +yumi +zabella +zalaya +zamirah +zarya +zoella +zophia +addeline +aerith +alida +amberlynn +ameila +amilliana +anapaula +annali +arisha +avari +awa +aziah +bo +brayla +celestia +chassidy +chiamaka +clarisa +cornelia +dallis +darcie +destiney +edison +eiley +elisia +elleigh +elma +elvia +erza +ethel +everli +faithlynn +gabriel +galia +griffin +habiba +hafsah +hazelynn +heba +idalia +irena +iylah +jace +jacinta +jadelynn +janell +jorja +judah +kaliya +koda +kodie +koi +kyanna +kylan +lamees +lawson +leelah +lennyn +lillee +lisbeth +lundyn +lyana +lynda +lynnleigh +mali +marcia +masyn +matilde +mena +milliana +minahil +mirabella +mireille +munira +mysha +nalayah +neely +neema +niyla +noemie +oceana +oliviana +posey +raigan +ramiyah +reginae +renlee +rozlynn +ruchy +rynlee +saba +sayla +scarleth +seneca +shaindel +tamari +terri +tiaraoluwa +tinslee +tory +tulip +vale +waylynn +xolani +yanira +yetzali +zury +adali +adelie +aiko +amarachi +analucia +angelika +ariabella +ariam +ariannah +asya +aubry +brailee +braylen +brenleigh +brylynn +cambry +chelsy +chizaram +damya +danely +dariah +dasani +davis +eliya +eniyah +enya +evyn +fraidy +galaxy +graciella +indica +indya +jacklynn +jadah +jailene +jatziri +jayana +jayline +jessia +jireh +johnna +kacee +kaedence +kaili +kamorah +karaline +karrington +kayra +kinzleigh +kylani +lainie +lareina +lejla +leonna +lovina +maddelyn +magdalyn +maiah +manal +mannat +marcelina +marly +maryan +mayson +meklit +michele +montgomery +muntaha +najma +navie +neila +noreen +nyelle +payslee +rhys +riverlynn +rylinn +sania +sarenity +savvy +shakira +sonny +stefanie +taegan +tristyn +varnika +xoey +yatziry +yeimy +yelena +yides +zaara +zeina +aadhira +aaira +ailynn +alliyah +alta +amauri +amberlyn +ameliana +amori +angeli +anniyah +aradhya +avalina +avanna +avri +ayelet +blessin +brennan +bryndle +camia +caylie +daiana +dayami +declan +declyn +demiyah +deonna +dhriti +elida +ellagrace +falyn +georgianna +giavana +gypsy +halen +halsey +hasset +hayat +haydee +henleigh +ilse +ivee +ivyana +jacee +jaeda +jamison +janya +jaxyn +jayliana +jaymie +jemimah +juna +kaizlee +kalilah +kamrynn +kaydee +kierstyn +kyliee +larkyn +leeah +leilana +lilianne +livvy +lunna +macklyn +madaline +madelynne +mahlani +maleena +maraki +margeaux +megha +mehar +meliyah +miri +mirna +miyana +monae +oumou +parisa +parnika +ramya +ravenna +riah +savina +semira +shana +shaya +siara +solange +talynn +tennessee +trinitee +tula +twila +uriah +vanesa +windsor +wrigley +xareni +zahava +zamaya +zen +zhara +zivah +adalene +adamari +aerin +ahaana +alahia +alauna +alethea +alorah +amarii +analynn +andee +angelyn +anh +annaly +ariani +belky +blaise +brazil +caeli +cairo +celestina +cherry +copeland +cosima +devynn +deysi +ellasyn +emeli +emilynn +emmelia +ensleigh +esabella +esra +ezmae +ezrah +fanta +greenlee +gwendolynn +ilhan +island +jackson +jaclynn +jaelle +jameelah +jelani +jenica +jett +joanie +joury +junie +kamoni +kash +kathalina +kayce +keeva +kemani +keysi +kimaya +kimbella +klani +kloey +korina +kree +kyleah +lady +laiya +lamia +layal +leliana +liliane +lisette +livana +lucina +maila +maile +makylah +mallie +marely +mariely +marvel +mckenzi +melanny +mischa +moon +nayleah +niang +nolan +nomi +nylani +orla +renna +rowena +rozalynn +safiyah +samiah +samyra +sansa +shanel +surah +svetlana +syriah +treazure +ursula +willamina +winnifred +yatzil +yoselyn +zephyr +aaralyn +aitanna +ajla +alasia +alaylah +alesha +alix +alyiah +alyx +amiliana +anastazia +angelita +arleigh +armanii +ashlin +aviella +avina +azayla +basya +bertha +braleigh +breonna +calianna +camiya +catori +chantel +chloey +damaya +darina +emersynn +evey +fionna +genisis +graylynn +gwenivere +helaina +hidaya +ilona +israa +ixchel +izabell +jackelyn +jaia +jamaria +janey +javiah +jori +joud +jurni +kaizley +kalise +kamori +kashlyn +kassia +kayanna +kelise +kelley +kennedie +kooper +krislynn +kymani +laurynn +laykin +leianna +liliya +lilya +lira +logyn +luka +lyza +mahnoor +mailyn +malayna +mariafernanda +mariska +mathilde +mirella +mycah +nainika +nakia +natalyn +nayah +nelle +odelia +oliviah +quetzalli +raena +raiden +rhian +riana +rosslyn +ryen +rylyn +saachi +samar +sammi +sanya +sejal +shaira +shelly +shrinika +simi +stephania +teddi +tehila +unity +viviann +yajaira +zaiya +ziana +zimal +zuriel +aaniyah +aasiyah +adeleine +ailen +ailin +aine +akilah +alaysha +aleiah +alva +alysa +amahia +amaree +anaira +annarose +arcadia +areej +arohi +austynn +beauty +bellamie +blen +camri +cari +carlin +codie +dalyla +damari +dionna +dyani +ellaina +emeree +emylia +erykah +genevie +getsemani +gissel +graceyn +henny +idy +irlanda +iyonna +jaelah +jalisa +jaliya +jalyn +jamyah +jenicka +jesslynn +joycelyn +kaavya +kacy +kaleyah +kamea +karlyn +kassidi +katara +kayana +kenslei +kensly +kloie +kolbi +kynzie +laiba +lilla +lilou +lizzy +mackinley +maelani +makenzy +malayia +marah +marcy +mayleen +maysen +meelah +merari +mesa +milli +misk +naina +nalaya +nana +natalynn +nefertari +nishka +nivea +orly +ottilie +paislie +penina +promyse +quin +raiya +reigna +renatta +retal +rin +rivers +safaa +sheena +sigrid +skyleigh +spring +suhayla +tennyson +thelma +topanga +tynlee +tziporah +viana +walker +yaneth +zaia +zharia +aariah +abree +adalin +aishah +akshaya +alexiana +anushka +arbor +arian +arianah +asani +asiah +asuna +audrielle +avaline +avangeline +avianah +aviyah +avleen +avree +ayan +aysia +azaliah +brecklynn +calani +camry +cartier +chidera +daisha +dejah +delaina +delana +deliah +delyla +dempsey +denym +dove +dynver +ekaterina +elayne +ellana +ellarae +ellenor +ely +emelina +emina +emmagrace +emoree +eriel +erielle +fae +ginny +gracee +hadasa +hali +honora +hoorain +jaelani +jaicee +jamileth +jazlene +jehilyn +jenifer +jood +julieanna +julienne +karah +katlyn +kayle +kaylor +keilah +kinslie +kolby +krislyn +kylia +kynlie +kynzleigh +langley +leidy +lianny +lunabelle +macyn +mahala +maizee +maryella +marygrace +marykate +naelani +naiyah +neeva +nikole +nithya +novalyn +queenie +radha +raisa +raygan +remmie +rhylan +rianna +rielle +riva +roni +roseline +rosita +rylann +sadia +saleen +samaiya +samanvi +sarafina +saskia +shahd +shilo +solei +soliana +sona +sundus +tahani +talyn +tamiya +tariah +tensley +teya +tinleigh +tomi +tyasia +tylar +tymber +ulani +videl +wrenna +yaiza +yazlin +yuki +zacari +zanyah +zo +aamira +abigaelle +aelin +aerial +aeva +ahna +ainsleigh +aissatou +alaila +alima +alita +aliz +alliana +aluna +amayrani +amera +analiese +anela +annamae +annamaria +antonina +archer +arlynn +aryelle +atziri +aviannah +avigayil +aviona +avnoor +ayonna +azaryah +azrael +bahar +basil +binta +bradlee +braeleigh +braya +breann +brezlyn +bruchy +caiya +callaway +casandra +catalyna +cathryn +chaitra +connor +consuelo +cruz +dalani +damia +danelly +dayani +deema +deniz +disha +eleonor +ellanore +ellory +evany +evvie +favor +franchesca +giovana +graci +gwendalyn +haily +henslee +illianna +ivori +ivyonna +jaedyn +jaiya +jalaiya +jaleyah +jaxon +jazlin +jehlani +jerzie +jewelz +jorie +josefine +jumana +kahli +kalei +kaloni +karin +kasandra +keanna +khloey +kiran +kristal +kristian +ksenia +kyli +laiah +laiklyn +laiklynn +lavina +layani +lee +lehlani +leiani +leina +lenny +lilac +loralai +louna +lovella +lyvia +maddy +mahlia +mairead +malaiya +malaiyah +marcie +marietta +masa +matilyn +maude +maybelle +maylynn +medha +michaella +myleigh +nabiha +nakshatra +naudia +nayra +naysa +nevada +nicolina +nimrat +nissi +owen +paiton +rayn +remmington +reverie +robbie +rosey +rossi +rylah +sakina +sami +selin +shawna +shekinah +srinika +sriya +taylah +tommi +vy +wrenlee +xandria +xara +xia +yaslin +yessica +yulisa +zaelyn +zalia +zamaria +zehra +zeplyn +zuleyma +zyon +aamiyah +adaiah +adama +addysen +adisyn +adrina +aili +alaijah +alayjah +alexie +amarianna +analiz +anijah +anvita +anyiah +ares +arisa +ariza +arlee +armonie +arriana +arrianna +asra +aubriel +aundrea +avory +avyn +aza +azelia +bailei +belladonna +bralynn +breanne +briel +caleah +calise +calissa +camillia +cecile +charlea +chavy +chrislynn +cydney +daila +darah +domenica +drea +edelyn +elenore +ellarie +elloise +emerlyn +emiyah +enid +envy +eretria +evaleigh +faustina +fawn +genesys +girl +glenda +graycen +hajar +harlan +harmoney +hazelee +holden +inna +isabeau +itzamara +ivyrose +jaanvi +janay +janiyla +jaquelin +jasiyah +jasmina +jazariah +jeimy +jerzee +jessalynn +jetta +jizelle +kalleigh +karsynn +keana +keri +khamari +kiarra +kilani +kween +leighann +livy +lynnix +mackenzi +madi +maelie +makaylee +malone +markayla +mattea +meliah +meral +mikenna +nashly +nautica +navia +nehemiah +niara +nixon +noriah +nusaybah +ohana +pari +peri +rainbow +rainy +ranya +rebeka +remmy +risa +rome +romee +rona +roselie +ruthann +ryanna +safina +saida +sallie +samyah +scotlynn +seerat +sera +shylee +signe +skyelar +suzie +syncere +talulah +vaughn +verona +yanet +ysabel +zahira +zailynn +zaleah +zeniyah +zunairah +aairah +adi +adler +adna +ahava +ailish +aima +airi +akayla +alanys +aleana +alyzah +amilyah +anam +andraya +andria +anneli +anyeli +anzal +aolanis +aqsa +arelis +assata +augustina +aurelie +avana +ayelen +aylinn +azure +blue +bradleigh +brantley +breana +brexlee +britany +camilah +camilia +candelaria +chantal +charliee +chelsie +clio +corah +corbin +corey +corra +cristel +dannie +dezirae +diem +eda +elleana +ellorie +emaleigh +emilly +emira +emri +eniola +faelynn +faithlyn +favour +finn +freja +gertrude +gracy +gweneth +haizel +hallee +ifeoluwa +ione +ivelisse +jacy +jaileen +janel +jayah +jaylinn +jeannette +jenessa +jezebel +jill +joscelyn +justus +kady +kaeli +kalee +kambry +karizma +kashmere +kathrine +kaylina +keaton +kenadie +kera +kerrington +keyra +kirah +kiyara +koryn +kyleena +kynley +laniah +liam +locklyn +loralie +maebel +maeli +maison +marelyn +maribella +marybeth +mavery +mayci +meenakshi +mehreen +meleah +meryl +mikenzie +milany +mirah +mykayla +nakayla +naleah +nari +nisa +nitara +nona +nyx +odalis +paislei +paizleigh +parris +peggy +prestyn +rayann +reighlynn +ridhi +rylea +salena +saron +sereen +shantal +skarlet +sofi +sonali +sura +tayah +taylie +tiwatope +tonya +trenity +tylah +tyonna +vincenza +xylah +yeimi +yemariam +yemaya +zayley +zeinab +zionna +zohra +zorah +zulay +zuria +zurie +aariya +abbigale +adriella +aerilyn +afnan +ainslie +aishani +aleiya +aleiyah +amariya +amarra +amreen +amylia +anaaya +anevay +annah +arwyn +arynn +asmaa +auna +aveyah +avonna +baani +calee +carma +charlise +cirilla +dally +daysi +dhiya +dianne +eily +elayah +elizaveta +emunah +enna +esma +ezmeralda +farryn +fraya +freedom +freida +gioia +graycee +hailyn +hanvika +hazelyn +hazleigh +helene +heran +ikhlas +ilsa +ilyssa +isidora +ivorie +jala +jalaysia +janella +janvi +janyiah +jersie +jhavia +jolette +jolina +jonae +jovana +kaleesi +kalianna +kamree +kansas +karmella +katerin +kayci +kayzlee +keyonna +khalessi +kieran +kilynn +koralyn +kyrielle +lakin +lanaya +laylanie +leira +lelah +lilo +lilyth +lindley +lucciana +lynnea +maddalena +madigan +maely +maevyn +mahari +mahealani +mahina +makinlee +mana +manasvi +marsha +maryanna +masha +maylie +mckinnley +mckinsey +meylin +miliani +naevia +nakiyah +namya +natania +neena +neyla +nirvi +oluwatamilore +orli +paitynn +perl +prairie +quincey +quinlee +raneem +rayleen +reba +reegan +reena +renleigh +rhilynn +rumaysa +ryli +saanvika +sable +sabrin +sahily +salima +samora +sarena +sedra +shahad +shamira +shanell +shaniah +shaylin +solomia +storie +suhani +taelor +taina +tayleigh +vedika +verena +wrenn +ximenna +yulia +yzabella +zahria +zakari +zana +ziona +zoi +zoriah +zyonna +zyriah +acsa +addaline +addley +aizlynn +akiyah +aleaha +aleenah +aleesia +alitza +allyssa +ambria +amery +anagha +anala +anamarie +aniela +anishka +anouk +anshika +arayna +arla +arlen +arnika +asees +augustine +autum +avital +azalee +azarah +azelie +berlyn +bowen +breah +brogan +cai +camya +catalea +catelyn +chioma +chrislyn +ciera +clark +daija +dailynn +danah +darielle +darlin +davie +debbie +decklyn +delayla +devany +devi +doreen +eilee +elanie +elektra +elianis +elisabet +ellyson +emerly +emmah +emmalie +enaya +erina +esmay +esraa +fia +frady +francheska +gabryella +gennesis +ghazal +hailynn +haset +ilene +illyana +inga +iniya +ishana +izzabelle +jadalyn +jagger +jakiya +jaleigha +jalena +jamyra +jaselle +jayani +jaziya +jeylin +jrue +julisa +kadiatou +kadyn +kadynce +kaedyn +kailea +kaiulani +kamyra +kapri +karyme +kayah +kaylana +kaylanni +kelce +kelia +kemiyah +kendell +keniyah +kenzli +keysha +kiani +killian +kiyana +kiyanne +knox +kyana +laasya +laekyn +lahna +lanah +landrey +layloni +leasia +leightyn +liel +liliann +lizabeth +lorenza +mackayla +maddi +madelaine +maevery +mahsa +majesti +makeyla +maleia +marci +mariangel +marionna +marlyn +maylene +mayzee +mckinsley +meili +melodee +mikaylah +miles +momina +mumtaz +myanna +myia +nailea +nallely +nariya +nasya +nature +neda +nefertiti +nela +nyree +oliva +olivianna +portia +pranavi +priyanka +rachell +ray +rayelle +raygen +renesme +reyah +rhiyan +rhonda +roza +saniah +saylah +seraphine +shailene +shauna +sheryl +shree +skarlette +solene +sophya +suzy +tahiri +tatiyana +tea +teal +tempest +tinsleigh +trudy +tuesday +vaishnavi +velma +viha +vina +vita +viviane +wrenleigh +yanelli +yani +yari +zanaya +zanylah +zarai +zaviah +zelia +zenaya +zeppelin +zuzanna +aalani +aaliah +aamina +adaliah +adanna +addalee +adel +adelise +adithi +adya +airis +aishwarya +aiva +aivy +alania +alden +alexxa +aleyssa +alira +allora +alyssandra +amarissa +amberle +ambrielle +amel +amorie +analyn +anasophia +anastasiya +anavictoria +anella +annalea +anuhea +anyia +araiya +arantxa +arika +aryam +audie +aviyana +avneet +barbie +basma +bellami +benjamin +beretta +bibiana +bina +braxton +braylie +breasia +breelle +brier +brithany +briza +brodie +caelynn +cailani +callen +callia +calypso +camrynn +carlene +carlyn +cassidi +charissa +charvi +cinthia +citlalli +cody +corie +cozette +cristiana +daijah +damoni +darling +delaila +dhanvi +dim +dima +dionne +divisha +dominga +dorian +eilis +eknoor +elanna +elysa +emiley +emili +emmajean +esmerelda +etty +evalena +evani +fajr +gelila +germany +giannah +gimena +graelynn +haiven +hanah +hartlee +havannah +havilah +hinata +holiday +ianna +ilyanna +imara +indra +islay +israella +iveth +jacquelynn +jadzia +jaelee +jakyla +jakyra +jamari +janis +jaquelyn +jaretzy +jasia +jasmyne +jatziry +jaymee +jayonna +jeanna +jeannie +jenise +jentri +jermany +jody +jordi +jouri +jovee +juliann +july +kaela +kaida +kamber +kamylah +karra +kayleah +kaziah +keara +kemora +kendi +keyara +keyri +khai +kleo +kristi +kriti +krystina +kymora +lakynn +larisa +lawsyn +lemon +linh +loraine +loyal +luzmaria +lyndi +lynnex +madalena +maddix +maheen +malayla +mamie +manahil +mattilyn +menucha +michael +mickey +mikaella +nadeen +nadiyah +nahia +nailani +nayelis +niki +niralya +niva +nysha +quinlan +quinlynn +rayana +rayden +rhyann +richelle +rion +riona +riyana +roseanna +rumaisa +ryliegh +rynn +saffron +sagan +sahra +santina +sehaj +serenitee +seriyah +shaylyn +sheridan +shivya +sidrah +siri +skylan +soleia +spirit +swayzie +taj +tamiah +tamya +teagyn +teanna +thais +torah +torryn +trina +twyla +tylie +vanity +vasilisa +vela +vivia +wanda +wyllow +wynonna +xela +yashika +yoana +yuridia +zain +zamiya +zaydee +zaynah +zemora +zeplynn +zuriah +aalyiah +aanika +aariana +aarika +abrar +adalae +addisen +ahtziri +aithana +ajah +alexander +alexzandria +alilah +alisia +ama +amazing +amorette +amyia +anaika +aneesa +angelise +anhar +anila +annaclaire +anneke +annlee +annslee +areen +areesha +aribelle +arilyn +ary +aurie +autymn +ave +averlee +averleigh +avira +ayani +ayeza +aziya +azrielle +azula +bless +brecken +breena +briarrose +bridgett +brielynn +brienna +brinsley +caleesi +caliah +carolyne +charlye +cheyann +christen +chyanne +cohen +coraleigh +corbyn +crosby +dalayah +dalis +daniel +darian +darleen +daviana +dayton +dea +delores +dhara +dilynn +donya +dulcemaria +dyana +dyanna +electra +eleina +ellieanna +embrie +emileigh +emillia +emmalene +erabella +evangelyn +evelia +evelyna +evony +ezabella +falynn +fatma +fatuma +fayelynn +flynn +gabrianna +geovanna +gurnoor +hadeel +hadia +harlo +hazelle +hikari +huntlee +imari +inari +ivania +jahlani +jakira +jaleesa +jamira +jamyiah +janayah +january +jaslin +jazz +jennica +jersi +jisselle +jocabed +josabet +journeigh +kaidynce +kaija +kala +kaleiah +kalissa +kalyssa +kamelia +kandice +kanyla +karalynn +karena +karmin +kashlynn +katja +kaybree +kaylan +kaysen +kelcie +kiernan +kinnley +kinza +kiva +koral +koralynn +kourtlyn +kyia +kynzley +lachlan +laelynn +lamaya +lanna +lareen +layanna +leeana +leeba +leinani +lennie +leo +leyana +lilee +lowen +lucas +lucienne +maanvi +maanya +maija +maisha +maisley +manuella +maricella +marvella +maryalice +matea +mayley +merrick +merry +millee +minka +mitzi +moksha +mora +moriyah +muriel +muslima +nafisa +najah +nasra +nataliya +navayah +naveyah +nayana +neomi +nevayah +nilani +noble +noely +nolah +nysa +olena +oliver +oluwanifemi +paislyn +paz +pheobe +pierce +pricilla +raegen +raghad +railee +railey +rainee +rani +raziya +reet +reham +rheagan +riddhi +rihana +rosaria +rubani +ruhani +ruqayyah +ryn +saavi +saiya +samary +sameera +samone +saraiyah +sargun +saveah +scarlettrose +seline +sharlene +shaye +shayleigh +sherly +shirin +siyah +siyona +skilar +sloka +soliyana +stacie +syrenity +tahari +talise +taylar +tionna +tyleah +uriyah +valen +vani +vayla +vella +vivi +winslet +wynona +xitlalli +xuri +yarielis +yaritzi +yesly +zaiyah +zamari +zamyra +zanyiah +zawadi +zelina +zephaniah +zianna +ziyana +zosia +zowie +aasiya +adalida +adayah +addilee +adelena +aeliana +afia +afrah +ahmani +aidyn +ainoha +aivah +akemi +albany +alexys +alicen +alisyn +alitzel +alyric +amalya +amberley +amoree +amran +anahita +analaya +anani +anette +annastyn +annelyse +anyssa +aolani +ardyn +arianni +ariyonna +aubryn +audriella +aurorah +avya +ayumi +azia +azriel +bellamarie +berlynn +brealynn +breya +brieanna +brionna +brittyn +brixton +brynli +caley +callee +cambreigh +caylen +celene +charlei +christelle +christin +clarabelle +clarisse +courtlyn +dalayza +daphnie +darely +daylani +deklyn +deniyah +diala +dilara +donatella +eliah +elize +ellouise +ellyn +elspeth +elysse +elza +emmanuela +emmerie +emrey +emrys +enzlee +epiphany +estephanie +evangelia +evi +falon +fradel +fraida +frimet +gail +gianny +giorgia +grier +gwynevere +haivyn +hanalei +harvest +hazelgrace +hazlee +heavenleigh +heavyn +heily +henna +hind +hira +isella +ismahan +izadora +jadis +jaimee +jayli +jazel +jenae +jenika +jenni +jerrica +johari +jonna +joshlyn +joshlynn +kadie +karliah +karri +kasyn +kataleah +kathaleya +kelby +kenedi +kenli +kennadie +kennah +kerri +keva +kharma +khia +kinzey +kopelynn +koralee +korri +krishna +lanayah +latifa +leighanna +lennyx +leola +lera +livian +loreal +lucilla +lunarose +lyncoln +maddalynn +madysen +maeley +mailee +markie +marya +maryellen +mayrin +mayumi +mckinzie +meg +melek +meya +miaisabella +mica +michelina +milanni +milynn +mirakle +modesty +myana +myiah +mylan +naliah +namine +nashley +nataliah +nethra +nicoletta +nil +noeli +norie +novi +noya +nyeli +ori +phenix +pragya +prim +qamar +queena +raeanna +rainie +rakiyah +rameen +raseel +reilynn +rhett +rifky +ritaj +roman +rozalia +sahira +saina +samadhi +sari +saryah +sativa +shamiya +sharlotte +shayne +sonam +stevi +sylvi +tanishka +tanyla +tavia +tazanna +teddy +teodora +toryn +troi +tyleigh +tylynn +tzivia +vedha +vianca +viera +vihana +yamilex +yanelly +yarishna +yena +yousra +yui +yumna +zamiah +zania +zanovia +zayanna +zeenat +zema +zenna +zhane +zoila +zyrah +aanaya +aara +aberdeen +adair +adalaide +adaora +adhara +aerabella +ailah +alazne +alethia +alley +alliah +allianna +alyona +alysse +amana +ameliarose +amerah +ameria +amirrah +amory +amri +anaia +analeia +angelee +anisah +anjolaoluwa +annaliah +anni +anorah +anum +aphrodite +apryl +araina +arora +aryan +aryella +aslyn +astella +athea +aubriee +aubrii +aurea +aurianna +auriel +aveya +aviya +avy +ayline +bay +beulah +brayah +breelynn +breleigh +brightyn +britain +british +bryer +caitriona +camyla +caoimhe +caprice +cataleia +catalia +celestine +chastity +chenoa +chizara +chosen +chrisette +ciel +collier +coretta +cyan +cyniah +dahiana +daisey +dakoda +davy +deana +declynn +destin +dhanya +ditya +dunya +eevie +elaria +elaysia +eleonore +elianys +elidia +elis +elivia +elka +ellaria +ellary +elleanna +elyzabeth +emalie +emberlie +emiya +emmaly +emmett +emmily +emmilyn +evah +evania +finnleigh +flavia +gissell +hadiyah +haevyn +hajra +haleema +hannia +harlym +hayzlee +heloisa +iana +iliza +ilya +inessa +ireoluwa +isaiah +ita +iya +jacinda +jaeleigh +jahara +jaleia +jalina +jaloni +jamiracle +jasani +jaselyn +jazalynn +jazaria +jeniyah +jeri +jesenia +jocelin +jordy +josiah +jozlynn +jru +judea +julieann +kahealani +kally +kandace +karishma +kataleia +katharina +kathia +kayan +kayslee +keala +keelie +keiko +kelci +kennia +kenzly +ketzaly +khalaya +kior +kopelyn +kourtlynn +kova +kristel +labella +lamyah +larae +lasya +latoya +layonna +leannah +leda +levy +lexani +lilja +lolita +lonnie +lorielle +lunah +lyndie +maayan +mackenzy +maddyson +maeven +maezie +maimouna +mairin +maiyah +maize +makenlee +makennah +mala +malaia +malaina +malasia +malayiah +maleya +mariamawit +marylin +mayari +maybel +mayven +mccall +mckenley +mckenzy +mckynzie +melea +mercedez +meridian +micayla +mihika +milaya +mily +morghan +morireoluwa +mulani +naeema +nahara +naidelyn +najwa +nani +nataley +natalina +natilee +nayara +neah +neilani +neysa +niana +niaomi +normani +oliana +oriyah +oshun +phyllis +rakeb +ramiah +reigan +reighlyn +renad +rene +rhylynn +rida +roan +roizy +ronin +rosamund +rossy +rubee +ryelle +sabiha +sadee +sakari +samariah +sammy +sarabi +sayde +sayra +shadia +shane +shanzay +shariyah +shawn +shelbi +shelbie +shevy +shoshanna +shraddha +shravya +siddhi +solveig +suraya +syrena +taiya +talula +tamsin +tiare +tilda +turner +vaanya +valorie +varsha +vung +waverley +waylon +weslee +wylder +wynnie +xayah +xylia +yakira +yanelis +yazlyn +zahlia +zailyn +zaire +zakaria +zenia +ziggy +zita +zuleika +aasha +abbi +adaliz +addalynne +addi +aelyn +agustina +ahmari +ailana +aime +airlie +aissata +alaiza +alesandra +aliani +alicja +alishba +alissandra +aliviana +alizee +allure +alonah +alonnie +alura +alyra +amarionna +analea +anara +anayra +anely +annais +annalina +annaliyah +annayah +annsleigh +anthonella +anusha +apollonia +arha +ariauna +ashari +ashlynne +ashtynn +asmara +aspynn +athaliah +athina +auriana +avalynne +avaree +avea +avereigh +avis +ayannah +ayrabella +aysa +ayse +ayza +batya +baylei +bela +blaklee +blu +bradie +braxtyn +briah +brinn +brynlynn +camile +canaan +carlotta +cassi +chanell +chantelle +cherie +christyn +clea +clementina +courtlynn +daleah +dalexa +danisha +danitza +dashley +dayonna +debanhi +deklynn +deliyah +devika +devlyn +devoiry +dreya +duaa +dusty +efrata +eilish +eleena +ellerie +elley +eloah +elody +emalia +emaya +emelynn +emilianna +emilija +emiline +endia +espyn +everlea +evolette +fanny +fatema +fenix +filomena +francia +gabbriella +graclyn +grae +halina +hamdi +han +harini +hartleigh +humaira +idaly +ilia +iriana +isolde +itzia +jadalynn +jae +jaidah +jaimie +jalea +jalilah +jaretzi +jayleah +joli +josefa +josselin +joya +juri +kaden +kaileah +kalisa +kamil +kamrie +kamyiah +kanaya +kashmir +kasia +kattleya +kayani +kaylinn +kaytlyn +keelyn +keilly +kemari +kemya +kenlie +kensey +kerry +khaliya +khiara +kia +kingston +klaira +klover +koa +kona +krimson +krissy +kyleen +kylyn +kynli +laelia +lailynn +lakshmi +langston +lanora +leanora +leeyah +lianne +linnaea +lissa +maddalyn +maddyx +madyn +maevis +magda +mahathi +mahika +mailey +maimuna +makaiya +maleeha +malie +malory +manaal +manar +maranda +margie +marita +marni +mayela +melaina +mele +meliana +miana +mikaila +millianna +minsa +mirel +miroslava +miyanna +molli +morgyn +mushka +myrna +naava +namiko +nazaret +nelani +neytiri +nidia +nimah +nixie +nyelli +nyleah +olanna +olivya +oriah +parthenia +payzlee +perrie +pharah +pheonix +pietra +pressley +radiance +raegyn +ragan +raphaella +rayonna +remee +remingtyn +rhemi +rhylei +riann +risha +rital +rut +ruthanne +saara +sanah +sani +saraiah +seanna +shams +shamya +shanice +shanti +sherri +shiann +shukrona +siona +skyelynn +smith +srishti +stefani +stellah +suriya +talea +talyah +tasha +tauriel +tehilla +temari +thanvi +tiahna +tora +torianna +torie +trany +vallie +viona +wesleigh +weslie +xandra +xoe +yazhini +yulieth +zainah +zamariah +zamia +zamyah +zarayah +zelma +zenovia +zoraya +zyanya +aaravi +aaron +abena +abriel +adalynd +adelene +adriane +adyline +afomia +agata +ahsoka +aide +aislee +aiyah +alainna +alayza +alesana +alianah +alianny +allanah +allayah +allisyn +allyanna +almira +amaliya +ameliyah +anaeli +anastasija +anayla +andersyn +andra +andreya +anel +angelena +angeliz +angelly +anina +anjelica +annasophia +areya +arieanna +arria +aryel +ashira +audria +avrielle +ayaat +aytana +azora +beaux +bellanie +bellatrix +betania +bethania +bintou +blakleigh +brigette +brina +brylei +cabella +caila +caira +caisley +calynn +carah +caralyn +carlynn +caylani +cayley +cherysh +china +christabel +clodagh +corynn +daizy +dajah +damaria +daneen +dareen +dariya +dayleen +delaynie +delayza +destyni +devani +diva +dominica +drue +eilah +eilidh +elanora +elenna +eleora +ellierose +elliett +emmakate +emmalyne +ettel +fiadh +flannery +florencia +gemini +ginevra +graylin +graylyn +greenleigh +haifa +haisleigh +hallelujah +hanifa +hannan +harriett +haydyn +hayla +hazyl +henry +holli +honest +houston +iymona +izamar +izzie +jabria +jailani +jailey +jalayla +jamelia +jamilla +janea +janiece +janiylah +janyah +jaylei +jazlyne +jeanelle +jenasis +jenaya +jennalyn +jerney +jerzey +jerzi +jessiah +jonni +jonnie +joplin +josabeth +josalynn +joseph +josi +josslynn +jourdan +jurnie +kadance +kaelin +kailana +kaisa +kaisyn +kalahni +kalaiya +kamyia +karalee +kariana +kariyah +karlei +kataleyah +katina +kaysie +keari +keasia +keiara +kellyn +kenlei +kesleigh +keyani +khadeejah +khalilah +kilee +klea +korynn +kylina +kynadee +kynslei +kynzlie +lakayla +laurelle +leenah +leeya +leiliana +leire +lenyx +lexia +lexii +leyanna +lilibeth +lillyonna +liyat +lona +loriana +lorin +loza +lumina +lyllian +lyndee +lyrical +maaliyah +madilynne +madisynn +makai +makya +makyia +maleeyah +maleiah +manya +maranatha +mariame +marielena +marilla +mars +maryelizabeth +maryrose +marysol +mataya +maybelline +maylanie +mehr +meilah +mekayla +meleana +melony +metztli +mianna +mikeyla +mikiyah +mikyla +milayah +mimi +miray +miryam +miyani +murphie +myangel +naavya +nabila +naeemah +namiyah +nasiyah +nayelie +nayvie +neala +nelli +nevaeha +nicola +nikayla +nikol +nile +nima +nira +noe +nohea +norielle +nyella +nyellie +nyliah +nymeria +oaklynne +oliviagrace +oliviarose +page +patrice +phaedra +purity +quinlyn +quinnlee +raelle +raeven +ramiya +rashell +raye +reeve +reghan +reniyah +renn +retaj +rhianna +riyanshi +roosevelt +rosalba +rosali +rosalin +rosaly +rosealee +rosealyn +roseanne +rosely +rowe +rudy +ruhee +rye +sadaf +safari +saleena +saloma +sanaiya +sarita +satori +scotti +shaddai +shantel +shanya +shanyla +shealynn +shianne +shilah +shyanna +sinclair +siyana +solvi +stoney +sue +suheyla +sumeya +susanne +suttyn +synai +syniah +synthia +tasia +teona +teyanna +tigerlily +tisha +tiya +tracey +tricia +trista +trulee +tynslee +tzirel +valyn +vicki +vilma +waniya +westyn +yamilette +yarah +yaslyn +yeva +zaela +zahirah +zakiah +zamzam +zanae +zareen +zariana +zarrah +zendayah +zera +zoa +zona +zunaira +zurri +zuzu +aamirah +aaruhi +abbygale +abiha +abra +abrie +adaeze +adahlia +adaia +addylin +adelita +adhvika +adilynne +aditri +aidan +ailed +ailsa +aixa +akela +akylah +alanny +alenna +aletta +alexsandra +alianis +alizeh +allis +alonnah +alys +alyss +alyssah +amary +amaryah +amayiah +ameela +ammara +amra +analeigha +analie +annaelle +annaya +anova +antonela +apphia +araiyah +ariarose +aryahi +ashby +ashlen +ashten +asli +aubre +audreyana +audry +avalene +avey +aydah +beckham +bell +bellany +bethanie +bethlehem +betsaida +bhavya +bitania +blayklee +blessings +brave +breezy +breindy +brennley +brianda +briany +bristyl +brooklyne +caiden +calayah +caleigha +caliya +camaya +camella +carmina +carolena +cataleyah +caycee +chani +chapel +charmaine +chasidy +cherrish +christal +claribel +collin +conleigh +conley +cylie +dalal +dalaya +danai +dannia +danylah +darcey +davi +daylee +deaira +dehlani +deirdre +demiana +demii +demyah +denae +despina +dessa +dhalia +dillan +dominika +duchess +ebba +eh +eilyn +eirene +elan +eleanna +ellianah +elliet +emanuela +emilya +emonie +enola +enora +evamarie +evangelyne +ezme +ghina +giabella +gift +gila +greylynn +hadlyn +haelynn +halimah +hargun +harmani +hazeleigh +hela +helina +hiromi +hiya +honestii +ibtisam +ifrah +illa +imona +insiya +iremide +irha +ishita +ivianna +izabellah +jaeleen +jaelynne +jahnavi +jaiana +jaielle +jaley +jami +jasey +jasibe +jasnoor +javaeh +jaylianis +jeanie +jema +jenisha +jentree +jerica +jhanvi +jlynn +joannah +jozlyn +kallista +kallyn +kamarie +kamillah +kamreigh +kana +kariah +kartier +katherina +kathrynn +katiana +kayda +kaylany +kaylea +kaylianna +keelin +kelaya +kelcee +kemiya +kenzlei +keona +keslee +khalea +khaleesia +khamila +khamiya +khristian +kiaya +kimari +kimiko +kimorah +kionna +kiora +klaudia +kris +kriya +kwynn +kylea +kyley +kyliah +kyliana +kyndell +laityn +lamiya +lania +laureline +laycee +leddy +leighana +leydi +leyton +liat +lillah +lilley +lolah +loni +lorene +luanna +lydiann +lyliana +lynelle +lynnette +maat +madeleyn +madiha +maelin +mahima +maika +malahni +maleny +malissa +malu +maniya +manvi +mariaelena +mariann +marilena +marilu +maxima +maydelin +mayvis +mckennah +meerab +meghana +meghna +meika +memory +merryn +meyah +miasia +mickayla +mikala +mikela +mikelle +missy +munachimso +mykenzie +myleah +myles +myrical +nadira +navaya +nena +nevaya +nicol +nisha +noha +nolani +noraa +noralee +nuria +nylee +oasis +oksana +oluwateniola +paighton +paisli +payden +paytin +paytyn +pennelope +pharrah +posie +pria +quincee +radhika +raia +raigen +raileigh +raquelle +rayanne +raylinn +rea +rehmat +reighn +reiley +renea +reylynn +rhona +rhylin +rinley +robynn +roselin +rosmery +royaltee +ruchel +ruwayda +ryelynn +ryiah +sabreen +sachi +sadiyah +saia +salice +saliyah +samanta +sameeha +samiha +sarahy +savi +schuyler +scottlynn +secret +serra +sharvi +shaylah +shealyn +shine +shreeja +shukri +siani +sibyl +silas +sina +sneha +sofiah +soley +sophee +spruha +steffany +sugey +sumaiya +sya +tahirah +takiyah +taliana +tanaya +tehani +tehya +teighan +temple +teylie +tovah +tsion +valeri +vannia +vashti +vidhi +whitleigh +yaeli +yanna +yariah +yazlynn +yeshia +zaley +zaraya +zarriah +zavia +zeena +zeriah +zhamira +zylie +zyniah +aadvika +aala +aanshi +aashirya +abi +adabella +adaleah +adanya +adelheid +adelyna +adiah +adiva +adiya +adja +adysen +afreen +ahlayah +ahmya +aideen +aidel +ainhara +akila +akirah +akyra +alailah +alainah +aleisha +alene +alexcia +aliciana +alinea +alis +aloura +amaal +amai +amar +amatullah +ameah +ameliya +ameris +amirra +anael +anahy +anai +analisse +anastyn +andriana +angelic +angelisa +anilah +anira +anthea +araminta +arielis +arleny +arlowe +arrietty +ashely +ashika +astra +atalaya +atleigh +atziry +aubreyanna +auset +avantika +aviyanna +ayisha +aylanie +ayrah +azaya +azriella +baya +baylynn +betselot +bishop +brandie +brantlee +brenlynn +brilyn +briyah +bronte +brucha +bryley +brynnly +calaya +california +camber +canyon +carmelita +cathleen +cece +cevyn +chaney +charles +charlet +cheyanna +cole +copelynn +corabelle +corin +daanya +dakari +dakayla +dalayla +damani +damara +damiah +damiana +daniah +dannah +david +dayelin +decker +delmy +dema +denyla +devine +dynasti +elaf +elah +elexis +ellina +ellsie +elvina +emalina +emaree +emiliya +emmajane +emmalia +emmarae +emmry +emonii +emslee +enza +ephrata +erandi +eriyah +evamaria +farren +fatiha +fatimata +felix +finnlee +frankee +galileah +gauri +gisell +gladis +gracia +grady +gwendolen +gwynn +hadli +hailo +hanley +harbour +havanah +healani +heer +helana +hidayah +hollynn +honestee +icelynn +ilham +isabellah +jackelin +jaelene +jahaira +jahliyah +jameela +jamielynn +janeli +janeva +janina +jarely +jasiah +jax +jenan +jennings +jericho +jerusalem +jianni +jilliana +jinora +jisha +jochebed +john +johnny +jonelle +jorden +josilyn +joslin +judi +jurney +kabella +kaja +kajsa +kaleya +kallee +kalyani +kalysta +kamauri +kambryn +kamilia +kamsiyochukwu +kanani +kardi +karianna +karima +karrah +kashtyn +kateryna +kathlyn +kathya +katlynn +katriel +kaylahni +kaylena +kayson +keilee +keisi +keliyah +keller +kemper +kendrix +kennadee +khamiyah +khaza +kimiyah +knova +kody +koree +korey +kristyn +krithi +krysta +krystiana +kyiah +kylinn +kymoni +kyria +laelani +laiana +lamyia +lanessa +lashay +launa +lawren +laycie +legacie +lenni +lenya +leyani +leylanie +lidya +lilymae +londen +lorali +lorianna +lovie +luann +lucette +luxe +lyna +lynne +lynnley +maddelynn +madelina +maeson +mahogani +maiza +makailyn +makenzee +makinsley +makyah +malala +malyah +man +mandi +maniyah +manna +maral +mareli +margret +maribeth +marlaysia +marwah +marylynn +masie +massiel +mayli +mayva +maze +mckenlee +mckenzee +meeka +melanni +meta +metzli +mialani +mialynn +miko +milanie +milanna +milee +mileva +mio +mirra +mubina +mylia +nalanie +naloni +naryah +navah +ndeye +neave +neri +nettie +neviah +nichelle +nimrit +nisreen +nita +noemy +noni +novali +nyari +nyjah +olina +olivea +oralia +pacey +paisyn +perrin +persia +pranisha +preslyn +preslynn +preston +racheal +raela +rafeef +rainah +raissa +ramsie +raniah +raylie +rayvin +raziyah +reagen +reanna +reia +rema +remii +rhodes +roseann +rosselyn +royelle +ryelee +sabirin +sadey +sadiya +sahaana +sakeena +sam +samanvitha +samayah +samina +samyuktha +sanari +sanvika +saphire +seleste +serana +seraphim +shamaya +shamiyah +shelsy +shreshta +sicilia +skylen +sofija +solace +solimar +sonnie +stoni +sumayah +suriyah +sylvana +syra +taitum +takayla +tamira +taraoluwa +teghan +teniola +thiya +timia +torrance +tove +tracie +tristin +tucker +tylia +tyliyah +udy +urvi +vaidehi +valley +vannah +veeksha +veya +victorya +vidalia +wells +willo +xavia +xaviera +xiana +xinyi +xochi +xya +yaffa +yanni +yenifer +yesica +yittel +yocelin +yoona +yuli +yuritza +yvanna +zafira +zahari +zailah +zakia +zakira +zaliah +zayli +zerina +zeva +ziyanna +zonnique +zuriyah +zyaira +aalina +aamilah +aaryana +aaylah +abeer +abiola +abria +adalay +adalicia +aden +adryanna +adylene +aelita +ahlana +ahmiracle +aiman +aiyonna +ajooni +akina +akua +ala +alaiia +alaria +aleea +alexiah +alie +alin +alishka +allee +alleigh +allyana +aloy +alyla +alyria +amaani +amanah +amarachukwu +amberleigh +ambree +ambrosia +ameriah +ameyah +amir +amiylah +analis +ananda +anavi +andersen +andilyn +anelise +anelle +anjana +annaleigha +annalicia +anvitha +apolonia +aranea +arietta +ariona +arista +arly +arlyne +arri +arriyah +ashayla +ashvi +athziri +atlantis +aunesty +autry +autumnrose +avaeh +avaiyah +avalise +avarae +averiana +averley +ayaana +ayari +azaylia +baily +bani +batoul +believe +bennie +beya +beyza +blaine +braelee +braelin +brayden +brentlee +brentley +breslin +brett +brinlyn +brixlee +burklee +byrdie +caden +caelan +calyn +camiah +carlina +carlisle +carmelina +cashlynn +cassiopeia +cathaleya +celest +chanie +charlii +charlsie +chisom +christel +cinderella +cloey +cobie +coley +copelyn +corianna +dailany +dailey +daisee +daisie +dalanie +daleiza +daliana +damyah +dannika +danny +darianny +dariel +darielys +davianna +daysha +daytona +deilani +demiya +denia +desiray +devanshi +dezi +diara +dillyn +domino +dunia +eastlyn +edda +edlyn +edynn +eeva +elanese +elda +eleah +eliane +elie +elienai +eline +eliz +ellawyn +ellenore +ellise +ellyse +elmira +eloni +elvie +emanuella +emilea +emiliah +emmalou +emmilia +erma +eryka +esmie +essa +ethan +eudora +evalie +evlyn +evoleht +evynn +fable +faduma +fartun +fayrouz +fendi +fiora +foster +franklyn +freda +frimy +gal +gali +gavriella +geanna +genavieve +genna +gethsemane +glendy +graceann +gracious +gracynn +graycie +graylee +greysen +gulianna +gwyndolyn +gyanna +halie +halli +halyn +haniah +haniyah +happiness +harnoor +haylin +hensleigh +hibba +hina +hiyab +hoda +holy +icelyn +idil +ikram +ilma +imrie +irys +isaura +ivery +iyannah +iyanuoluwa +iza +jaaliyah +jahleah +jahniya +jaileigh +jalayna +jamisyn +janasia +jannatul +javonni +jaylean +jaynie +jayona +jazzelle +jeilyn +jelina +jelissa +jeriah +jersee +jersei +jessamine +jesselle +jeyla +jezabel +jezelle +joceline +johanny +jojo +jona +jordanna +juliani +julianny +julyssa +juni +kailei +kailen +kailin +kailoni +kaior +kairo +kaisleigh +kaizleigh +kamaiya +kamarah +kamariah +kameela +kaniah +karyn +kayal +kayleena +kazlynn +kehlanie +kellen +kemoni +kena +kenda +kendy +kenisha +kennidi +kenyla +keonna +kestrel +kharis +khyra +kileigh +kindle +kingsleigh +kiri +korinne +korryn +krishika +kyleigha +kylen +kynnadi +kynnedy +kyri +lachelle +lalia +laniakea +laryah +lavaeh +layali +layni +legacee +leiloni +leiya +lenix +leonela +leta +lexiana +lianni +lilinoe +lillien +lillyth +linsey +lisandra +liviya +liylah +lonna +loraina +lotte +lucielle +lucila +luma +lunafreya +lunarae +lura +luzma +lyrah +lyria +maame +madalynne +maebelle +maegan +maela +maesie +maevry +maisa +maizley +makari +makaya +makenli +makinzee +malania +mallori +maraya +marialuiza +maricruz +marilee +marily +markan +marlayna +maryana +matty +mayerly +maylea +mckenleigh +melaney +melayna +melena +melinna +mellanie +memorie +merlin +miami +miani +mileah +minnah +mirian +morgana +morrison +mylo +myonna +nadiah +naija +naika +najat +najla +nakiah +nakiya +nakoma +nardos +navira +nazaria +nea +neriyah +nihal +nili +nivia +nnenna +noelly +nohely +nolynn +noorah +novalea +novia +nyana +nyema +ohemaa +oluwatoni +ovi +pema +peregrine +perpetua +petrona +pryncess +quinnly +rabia +racquel +raffaella +raielle +ramaya +raphaela +raynah +reata +reine +renezmae +reylin +rhen +rinnah +riot +riven +rocky +romani +romie +ronika +roselee +roselia +rosette +roxi +ruchama +rukia +ruqayya +ryenn +rynleigh +safira +sala +saleah +samera +samreen +sanam +sareena +saydie +sayge +seema +sefora +seynabou +shailyn +shamari +shari +sheily +shelley +shifa +shiori +sira +sirat +sirenity +skadi +skilynn +smaya +solenne +sonni +sophiarose +sorayah +soul +staci +starlet +stellarose +storey +suha +sumayya +summit +supriya +suraiya +swayzee +syrai +takara +taleyah +tanylah +taylan +temiloluwa +temima +teresita +teryn +teyla +thu +tiani +tylasia +tynleigh +umaima +valeska +valynn +van +vasiliki +venezia +vi +vianne +vickie +viya +wallis +weston +yaneliz +yarelis +yeilin +yilia +yisel +yuval +zabrina +zahrah +zamarah +zanai +zanna +zarielle +zaryiah +zayana +zaylani +zayleen +zea +zelaya +zenith +zeniya +zeynab +ziara +zionah +ziyan +ziyonna +aaila +aaima +aalyah +abbigayle +abel +abiah +abisai +abrish +absalat +adalei +addalyne +addilynne +adelai +adeola +adream +adrionna +adwoa +adylin +aemilia +aeriana +ahmira +ahmiyah +ahniya +aika +aileana +airah +aizel +aizlee +ajna +ajuni +ajwa +alazae +aleesa +aleigh +alexsa +aliany +alinda +alla +allizon +alylah +alyn +alyrica +alyviah +amare +amarrah +amaura +ameina +ameira +amely +amenah +amisha +amma +amyri +anabell +anahit +analayah +analyse +anastasya +andreina +anelia +aneliz +anesia +angelin +anica +anisia +annaleia +anslie +arella +arelys +arial +ariely +arihanna +arlin +armonii +arpi +arrabella +arrielle +asenat +asmi +atenea +atiya +aubreanna +aubreyana +avaa +avanti +averyana +averyanna +avianne +avriana +avrianna +avry +aylene +ayslin +azani +azaylah +azelea +azelle +azenet +baby +baylen +bayli +bellaluna +benita +berit +bette +betzabe +betzaida +bhoomi +blaike +blayne +bleu +bluma +braelynne +brayley +brelyn +bren +brena +breslyn +brexleigh +briann +brighid +brihanna +brinda +brixley +brixtyn +brocha +brynlea +brynlei +brynnlie +caidyn +calirose +callyn +caniyah +capriana +catia +catrina +catriona +celestial +cerys +charliegh +chayse +chevi +christabella +christella +ciani +cianni +ciin +claudette +coletta +corley +cortlynn +courage +creedence +cyla +dahlila +daia +dailani +daja +dalena +daley +danay +danaya +danilynn +danyelle +daphney +davia +davionna +dawt +daziah +deeya +deilany +dejanae +delara +delayna +delfina +delicia +demani +demari +demaria +demetra +denna +desarae +destinie +dhruvi +diarra +diora +dmiyah +dnyla +duru +dyllan +eiliyah +eiress +eislee +elany +elenor +eliannie +ellamarie +ellanie +elliah +elliyana +elysha +emara +embrey +emerlynn +emilina +emillie +emmaleah +envi +erinn +esmarie +estee +estrellita +evalynne +evanny +eveleigh +everliegh +evolett +evyana +eyla +eylin +faelyn +fancy +fariha +faryal +fathima +faya +fenna +fianna +fynnlee +galina +giovanni +gisel +gracielynn +graciemae +greenley +gurleen +gyda +haadiya +hadya +haileigh +halston +hananiah +harumi +hasna +hathaway +haylyn +hayvn +hazell +hero +heydi +hilary +hodaya +ilina +illyanna +itzabella +ivylynn +jaimarie +jakia +jakiah +jalaiyah +jamaica +jamara +jamariah +jamilet +jamylah +janelli +janilah +janyia +japji +jaye +jaylianna +jazalyn +jazzmine +jazzmyn +jeilani +jenevie +jernee +jerri +jezlyn +jocie +joselyne +journe +journiee +joycelynn +juelz +julianys +julieanne +jyn +jynesis +kadija +kaelah +kahlea +kahloni +kahmari +kailaya +kaileia +kailia +kailiana +kalanie +kaleeyah +kaliope +kamirah +kannon +karcyn +karlynn +karrigan +karys +kasie +kassidee +katheryne +katty +kaylynne +keani +keeli +keena +keera +keirah +keirsten +kelahni +kella +kellan +kelyn +kember +keniya +kenni +kenzee +kesley +keyari +khaleah +khaleesy +khalie +khalise +khamya +khepri +khiya +khora +kida +kiiara +kimia +kimya +kirstyn +kloee +knoxlee +kobe +kohana +koraleigh +kortney +kory +kouture +kowsar +kristianna +kristie +krithika +krysten +kyasia +kyliegh +kyndra +kynzee +kyomi +kyrin +lacee +lailany +lalani +lama +lanyah +laraya +larayah +latisha +laylee +layliana +laylonie +laysha +leani +leannie +lehua +leland +lesli +letizia +liany +lida +lileigh +liliani +lilleigh +lincy +lisanna +lisseth +livianna +livingston +liyla +lorraina +lucky +lucrecia +lun +lunabella +lunamarie +lydiah +macayla +maclyn +maddux +madlynn +maelys +magdalen +magdalynn +maham +mahia +mahiya +mairany +maiven +major +makaia +makaiah +makala +makhia +malanii +malanni +maleeah +maleeka +malya +mame +manreet +mar +marabella +marella +maricarmen +marit +marlaya +marliyah +marti +maryclaire +maryfrances +maryiah +marylou +marzia +masiyah +mattilynn +mavi +maxie +maylyn +maziah +melahni +melanee +mellie +melyssa +mercer +meri +meron +mi +midori +miela +mileidy +mili +milia +milica +mililani +millani +mills +minah +mirely +mirren +miylah +morayo +morgen +mylena +myliyah +naba +naileah +naiyeli +nakita +nakya +nandi +nare +narjis +nastassia +naturi +naveen +nechuma +nelia +neoma +nicte +ninette +nissa +niyati +noela +nolyn +noureen +novaly +novarae +nusaiba +nusrat +nuvia +nydia +nyela +nyrie +oceania +ola +oluwadamilola +oluwasemilore +omari +oni +oreoluwa +ovee +owynn +padme +paraskevi +parizoda +patsy +paw +penellope +penelopi +penelopy +pixie +poetry +pranshi +presli +qiana +quorra +radley +raelan +rahmah +raini +rainna +rajvi +ralynn +rama +ramla +ramsi +rarity +rasha +reeya +reiya +reygan +rhoslyn +ridhima +rifka +ritika +rodina +roe +rogan +romelia +romey +rosalena +rosamaria +rosana +roxane +roze +sabah +sagal +saki +salaya +samriddhi +samuel +sanaii +sanjana +sareen +saryiah +savaya +savayah +savreen +sebastian +senia +sevi +shaanvi +shaarvi +shaniece +shanna +shanvika +shariah +shasta +sheri +shireen +shirel +shristi +shyra +simisola +simra +simrat +sireen +sivan +sophina +sophy +soriyah +srihitha +steele +sua +suhaila +suhaylah +sukhmani +sumire +surya +sylvan +symphani +symphany +tabatha +talani +talisa +talon +tamaya +tana +tanvika +tarah +tarynn +taylinn +teddie +tehillah +tena +tenleigh +terriana +terryn +tessie +theodosia +thia +tiegan +tiffani +timberlee +timberly +tiyanna +tulsi +vara +venessa +vivica +viyana +vyolet +wafa +wateen +whisper +wynnter +xayla +xiamara +yaa +yalena +yar +yliana +yoanna +yona +ysabelle +yulani +yuriana +yvaine +zafirah +zaha +zaileigh +zala +zaleigh +zarianna +zarra +zayden +zela +zeta +zoii +zula +zyasia +zyiah +aaditri +aaleiya +aamani +aaniya +aashritha +aavah +aayushi +aby +accalia +adalaya +adalayah +adaleyza +addisynn +addylynn +adessa +adilee +adrie +aerie +aftyn +ahlaya +ahmina +ahnesti +ahnyla +ahria +aidy +ainoa +aisla +aitiana +aizlyn +ajayla +ajournee +akiya +akyla +alaine +alaisha +alauni +alayssa +aleanna +aleesha +aleta +alexah +alexy +alexzandra +aleysha +aliahna +alianys +alika +alivya +aliyanah +allayna +alleyah +allissa +alynn +amarisa +amayla +ameia +ameilia +amelianna +amily +amzie +anahlia +anaid +anaise +anakin +analeyah +analina +andrew +aniko +annalaya +annalena +annalese +annalisse +annaliz +annalucia +annalynne +annelie +anneth +annia +anniah +annifer +annleigh +anoushka +anuoluwapo +anzleigh +araeya +arev +arica +arieliz +ariellah +arielys +arilynn +ariyan +armina +arrie +arushi +aryaa +aryani +aseda +asenath +aseneth +ashlan +ashland +atheena +athyna +atiana +atreya +aubrynn +avaleen +avamae +avayla +aveena +avenly +avianni +avreen +avrey +ayaan +ayanah +aylla +ayriana +ayris +azaleia +azarya +bailynn +bali +bana +batool +baylin +beckley +bekah +bellarae +benelli +bertie +bettina +beverley +bexlie +blaize +blessen +braxley +braylon +breella +bri +briela +briell +brindley +brooklinn +bryla +bryson +burkleigh +cadie +cally +calvary +camara +camrie +camyah +carlos +carole +carsynn +carver +cashlyn +cassadee +cassidee +cayenne +cera +cerise +chara +christyana +chrystal +chynna +cicely +cinthya +clancy +coleen +copper +corine +corryn +cortlyn +cressida +daina +daliya +danaly +danyella +daphnee +darrah +daryn +davey +deari +deava +deem +delanee +deliliah +demia +demiah +derriana +desteny +devonna +deya +deyjah +deziree +deziyah +dilyn +dion +dreanna +dyamond +edina +edyth +elainna +elanny +elanore +elexa +elinore +elisabetta +elisse +ellakate +ellamay +ellayna +ellenora +ellinore +ellionna +ellizabeth +elyn +elynn +elyzah +emaly +emberli +emelly +emerlee +emilyrose +emmrie +emyah +emylee +enas +england +eniya +enslie +enzleigh +eriella +erilyn +eryanna +esthela +estreya +ettie +evanie +evann +eveleen +evonna +eyleen +eymi +ezmay +fahima +faizah +fatmata +fenet +fiza +fortune +fox +franklynn +fynley +fynnley +gabi +gayatri +gianelle +ginna +greicy +greisy +grettell +gwendoline +hadasah +hadija +haizleigh +halona +hanaa +harris +harvey +haydin +hayslee +hebe +hedy +helia +hena +henchy +heylin +hildegard +honestie +huxlee +idalie +ife +iley +ilynn +inioluwa +io +ioanna +ipek +iqlas +isabellarose +isleigh +issabelle +iszabella +itzayanna +iveigh +iviona +iyah +iyanah +izzah +jadesola +jahari +jahnae +jahnyla +jaianna +jaionna +jaisley +jaiyah +jalanie +jalayiah +jalicia +jalylah +jamela +jameria +jamesyn +janaiya +janalee +janeen +janellie +janika +jasline +jaxson +jaxsyn +jaydalynn +jaylanni +jayley +jaymes +jeanine +jeannine +jehan +jenavee +jenell +jennavieve +jennyfer +jeremiah +jerika +jesly +jessika +jhade +jhanae +jiah +jiyana +jodee +joleah +jolena +jorgia +joss +jovey +joyelle +juli +juliza +juneau +justyne +jyla +kadee +kaede +kaelee +kaeliana +kahleah +kahleesi +kahmila +kaidance +kailan +kailanie +kailie +kaina +kainat +kaisey +kallan +kamarii +kamariya +kameelah +kammie +kareli +kasi +katelin +katyayani +kawthar +kaye +kaylanii +kayleeann +kayliani +kaysha +kaytlynn +keerat +keianna +kelaiah +kelany +kelilah +kelsee +kenidi +kennedee +kentley +kesha +keylianis +khady +khalesi +khalila +khaloni +kharli +kharter +khaylani +khlo +khya +khyleigh +kilah +kleigh +kmora +kmya +knowledge +kolette +krisley +kyani +kyanne +lachlyn +lailyn +laiyla +lakeisha +lakeleigh +lanai +lannie +larose +lauralee +lavaya +laylianna +leiyah +lenka +lennan +leti +levana +leylany +liberti +libi +lidiya +liliah +lilie +lilieth +lilu +lilyahna +lilygrace +linette +liona +liseth +loa +loany +loreli +lorie +louie +loveah +lowyn +loyalti +lucine +lucrezia +luetta +lulia +lunamae +lylia +lylian +lylith +lynae +lynix +lynna +lys +mabelle +macklynn +madilyne +maelea +maezlyn +maggy +mahreen +maili +maily +maire +maisee +makensie +makyra +malaak +malaiah +malayshia +mariaclara +mariajulia +mariany +marielys +mariluz +mariyam +marlaina +marykatherine +maryse +matthew +matti +mayana +mayrani +mazey +mazuri +meaghan +megumi +meilany +melat +melis +melyna +merary +meriam +meritt +merly +meztli +miara +michela +mickaela +mickie +mikylah +milahni +milayna +misa +misheel +mishelle +miyoko +miyuki +mizuki +momo +mylarose +myriah +nadezhda +naelle +nai +naiah +naleia +nanette +naraly +natanya +nathali +nathan +nathania +naylin +nazli +nazly +nebula +neima +nema +nhi +niayla +nida +niema +nikola +nohelia +nolie +nuala +nuriya +oaklin +odilia +olivette +omara +omega +ornella +osiris +oswin +otilia +owyn +paisely +peniel +peony +peyten +pfeiffer +phenyx +phynix +pola +poppie +preesha +prisca +priseis +providence +quetzali +quiana +quintessa +raedyn +raelene +raeley +rahel +rahima +ramyah +ranae +randa +rayaan +rayen +raynee +rayvn +realynn +reggie +rehana +remeigh +renli +reveille +reyana +rhya +rhyley +riata +ricky +rithika +ritisha +riverleigh +rola +ronan +rosabel +rosealie +roselina +roselynne +roxann +rozella +ruman +rushika +ryatt +ryleeann +saber +sada +saddie +sador +safiatou +sai +sakinah +samai +samay +samuella +sanayah +saraiya +saralyn +saran +saryn +savannahrose +sayesha +seela +seleen +seleni +selia +senaida +seriah +sevynn +shailynn +shreeya +shresta +shruti +shylo +shylynn +sindy +sinead +siren +siriyah +skylarrose +sokhna +sole +sondos +sophiagrace +soriah +starlynn +stela +suad +success +suki +sultana +suzan +suzana +suzannah +sybella +tai +taige +takari +tam +tamaria +taqwa +tarryn +tayvia +tayzlee +teia +tenaya +teonna +terry +thara +thiana +tiarra +timberlyn +timberlynn +tirenioluwa +tiyana +torin +torrie +torunn +torvi +tristen +tyaira +tziry +tzivy +uriel +valor +vedanshi +venba +ward +wiley +william +witten +wylla +xaila +xochilt +yailin +yalitza +yamilett +yitta +ynez +yocelyn +yuktha +yuritzy +yuvia +zafreen +zaiah +zairah +zalea +zani +zanobia +zarae +zarahi +zavannah +zayne +zellie +zhoemi +zhoey +zienna +zinovia +zoeii +zolah +zoraida +zoriyah +zuleimy +zuly +zylee +aafiya +aaradhana +aaryahi +aashna +abegail +abigal +adabelle +adalai +adaleia +adalinn +adamary +addaleigh +addysyn +adeena +adelae +adeleigh +adelisa +adell +adesuwa +adlyn +adlynn +adreanna +adri +aelish +afiya +afsa +ahmaya +ahniyah +ahriah +ahriyah +ahsha +aianna +ailanny +ailene +ailis +airess +aisel +ajourni +akiko +akosua +akshita +alabama +alanii +aleecia +aleila +aleissa +alessandria +alette +alexina +alicyn +alithia +alleah +allyn +almas +alysandra +alysen +amaaya +amairah +amanii +amariz +amei +amela +amiera +amika +amiria +amiyla +amiyrah +amoret +amoria +amouri +amrie +anab +anaclara +analiya +anarose +anasia +anastassia +anavey +andreah +andrianna +andrina +angelis +angella +angelle +angy +anistynn +annalei +annaleya +annelle +annya +anshi +antara +antigone +aoi +aracelli +areeba +arias +arieana +arline +aroyal +arriah +arshia +aryanah +aryssa +arzoi +asanti +ase +ashia +ashleen +aslynn +asteria +attley +atzi +audelia +audi +audrea +aunna +auriya +aury +ausha +avalie +avanelle +avannah +avella +averyrose +avion +aviv +avonni +avriella +avyonna +axa +ayaka +ayliana +ayona +ayslinn +ayveri +ayvie +azalyn +azalynn +azarie +azariya +azelynn +azizah +azrah +babygirl +bailie +bailyn +barakah +bari +bayler +bayoleth +belize +benni +beryl +bessie +bethsaida +blaikley +blaze +blyss +boluwatife +bonita +brae +braedyn +bralyn +bravery +braydee +breeanna +breindel +brenlyn +brexlyn +brezlynn +briahna +brianni +briasia +brighten +brihana +brin +bristyn +bronx +bryah +bryella +brynja +burkley +cadance +caela +cahlani +camarie +cammie +camren +caralynn +carey +carisma +carlei +carlena +carmel +carolann +caselynn +cathalina +catharine +ceanna +celes +cereniti +cerinity +chai +chaniya +charlierose +chaselyn +christabelle +christopher +cionna +conner +coralena +cory +cove +cricket +cristine +cyann +cyanna +cyleigh +dacia +dailah +daisymae +dalaney +dalaysia +daleyssa +dalina +dallie +dalya +danyela +darasimi +dash +davaya +davayah +daylah +daylene +daziyah +deairra +dearie +deetya +delailah +delainee +derin +deveah +devory +deylani +deziah +dharma +dmya +dniyah +donyae +dori +dorthy +dot +drishya +dylani +dyuthi +elaia +elaiya +elaynah +elba +elen +elenoa +eleny +elias +elieth +elinora +elira +elizabethrose +ellany +elnora +elowynn +elyria +elyssia +emberlin +emercyn +emmalynne +emmamarie +emmelina +emmely +emmiline +enma +eralynn +esli +espen +eula +euphemia +evaleen +evalin +evalise +evia +evin +evonne +eyana +fabianna +fabiha +fadumo +fareeha +faria +faryn +faythe +febe +ferris +fleur +franceska +gaelle +garnet +gem +genasis +genesee +genessa +giavonni +giuseppina +glenna +gorgeous +gracelee +graceleigh +gracelin +graciana +gurbani +gurnaaz +gwendelyn +gwyn +hadas +haddy +hadlei +hajira +halana +halee +halleigh +hallel +hanaan +hani +hannalee +harlen +harliee +harmoniee +hartlyn +hatley +hava +hawraa +haylei +haylynn +helayna +hellena +henli +henslie +hephzibah +herminia +heyab +hila +hyland +idella +ilena +iliany +indiyah +innocence +irhaa +isaac +ishi +ishitha +itali +ivoree +iyanni +izzabell +jaciana +jacob +jacquelin +jaelin +jaice +jakari +jalah +jaleeyah +jalen +jalila +jalise +janelys +janova +jaretssi +jasmeen +javayah +javianna +jaylan +jaylenne +jayliani +jaymarie +jaynee +jaysa +jazyiah +jenice +jeorgia +jerelyn +jerilynn +jeriyah +jermya +jerusha +jesalyn +jeshia +jet +jeweliana +jeylani +jezreel +jhalani +jinger +jiraiya +joaquina +jocilyn +joelee +johnni +jolani +joley +joliet +jolin +joory +jose +josseline +judaea +julionna +juliyah +justise +kacelynn +kaedynce +kaelynne +kahliyah +kahri +kaianna +kailanni +kaileen +kaimana +kaislyn +kalanni +kalany +kalayna +kalaysia +kaleeya +kalinda +kalkidan +kalla +kalyna +kalyse +kamala +kamdynn +kamor +kamorie +kamren +kanika +karai +karalyn +karliee +karman +karmela +karolynn +karris +kasiah +kasiya +kasiyah +katey +katrin +kayelynn +kayna +kaysley +kc +keela +keiana +keirra +kelbi +keleigh +kelsei +keniah +kenly +kenlynn +kennidy +kenzey +kenzlea +kerigan +keyleen +khalyla +khara +kharlie +kherington +khlani +khylah +khylei +khyler +kiki +kiko +kimberlin +kitzia +kiyanna +kiyla +knightley +knyla +kobie +koralie +kortlyn +kortni +kylene +kynadi +kyndel +kynlei +kyonna +kyrsten +laena +lailoni +laira +laiza +lakelee +lala +lamaria +lamiracle +lanita +laureen +laurielle +lavayah +laylamarie +lazuli +leanny +leba +leeona +lennex +lexis +lianah +lilliah +lillieann +lillymae +lilyanah +linkyn +linleigh +linsy +lior +lis +lissette +lita +lochlan +lojain +lorianne +lorien +lorynn +louanna +loujain +lovelyn +lovelynn +lovey +ludmila +luke +lumin +lyda +lydian +lylianna +lyris +lyssa +maaya +mabrey +mackensie +mackynzi +mackynzie +madalina +madlyn +madolyn +madylin +mahdiya +maiar +maiara +maidah +mairi +makailah +makana +makenley +makinzie +makynna +malachi +malayasia +malerie +malyiah +mane +manessa +mariaisabel +mariane +marianny +marijane +marilou +mariposa +marium +marjory +marlana +marlin +marloe +maryclare +marymargaret +maryum +mattalyn +matylda +maudie +mauri +mayarose +maymuna +maymunah +mayreli +mayukha +mazi +mccoy +mckinna +mckynna +meesha +meilin +meiling +mekenzie +melana +melayah +melika +melonie +menaal +menna +merissa +merlyn +metta +mieko +miia +mikal +milaysia +milianna +minda +minette +mishita +monse +moyinoluwa +myalynn +myelle +myricle +mystic +naama +naamah +nahlia +nairi +nakai +namiah +nanayaa +narah +narissa +nastasia +nathalya +naveena +navina +naviyah +nayani +nayeliz +naylee +naz +nerea +nevah +neveyah +nialani +nica +nimsi +niomie +nishika +niveah +nohealani +noralynn +noriella +nusaibah +nyriah +nzuri +oaklei +oceane +oceanna +olana +olenna +oliwia +omaya +omya +ozzy +parisha +pearson +pella +pennie +pessel +phiona +pippin +poet +porsha +portlyn +prarthana +pravya +preslei +quetzally +quinci +quincie +quynn +raelyne +raha +raima +raley +ramatoulaye +ranyiah +rateel +raychel +raylea +raynie +raziah +rejoice +renesmay +reniya +reylyn +rhaelyn +rhaelynn +rhiya +rim +rishika +roniyah +roohi +rosaleah +rosaleena +rosalene +rosealynn +rosebella +rudi +rus +rutvi +ruwaida +ryeleigh +ryliee +sabria +sabryna +sadi +sadiemae +safi +safire +safiyya +saga +sahalie +saharah +salayah +sameen +sameerah +samhita +samus +samyrah +sandi +santa +sanyia +sanyiah +sanyla +sanylah +sarabeth +sarae +saydi +sayre +seana +selby +serine +setareh +seva +shaden +shailee +shaima +shantelle +sharanya +sharayah +sharlyn +shaylie +shterna +shuri +shyne +siah +siddalee +sifa +silah +simaya +sincerity +sinclaire +skylynne +skyrah +skyylar +sohana +sonnet +sophiya +soriya +sreshta +staley +steely +stellaluna +stephani +suheily +sula +sully +summerlyn +svara +sweden +sylvanas +taetum +taija +taimane +taisley +takshvi +talaysia +taleia +taleigha +talin +tallie +tally +tanishi +tayana +taygan +tayley +teah +tela +tenlee +tera +tien +tiffanie +tilley +tinzley +toba +tobi +toluwani +tonantzin +townes +traci +tressa +trinidad +trinidy +tvisha +ty +tyliah +umi +valerya +vana +veena +veida +venecia +veralynn +vianka +vianny +vidya +viyona +vylette +warda +windy +wonder +xariah +xianna +xin +xinyue +xoie +xola +yaira +yaneisy +yaquelin +yarieliz +yaritzy +yashi +yashira +yasna +yinuo +yuriah +yuvika +yuxi +yuxin +yvonna +zakara +zanya +zaydah +zazie +zeah +zeanna +zeldy +zetta +zeyna +zoelys +zoeya +zyairah +zyann +zyelle +zyion +zynique +aada +aadaya +aadhvika +aailyah +aalaya +aaliyahmarie +aarnavi +aashika +aashriya +abeeha +abri +adamae +adana +addileigh +ade +adea +adelayde +adeliene +adelinne +adeliz +adely +adilen +adiyah +adlie +adoniah +adrijana +adylynn +aelia +aeriel +afeni +afiyah +agape +ahlia +ahlivia +ahmiya +aidee +aiesha +aily +airiana +aishini +ajai +ajanae +ajani +aksha +alanee +alayasia +alda +aleema +aleksa +alese +aleysa +alheli +alizon +alleria +allyna +allysa +aluel +alyeska +amaliah +amarys +ameelah +ameiah +ameliamae +amelle +amilea +amilee +amillya +amoha +amonie +amoy +amulya +amunet +anaely +anahla +analaura +analeya +analyah +anandi +andre +andreana +andreea +andrra +aneli +anesa +angelys +anise +anjelina +anmol +annalisia +annastacia +anneka +annetta +anokhi +anyela +aracelia +aracelis +arah +arcelia +arena +areyah +arianie +ariba +arienne +aritza +arlena +armiyah +arshi +artist +aryabella +asal +ashante +ashanty +ashli +ashvika +ashya +aslan +asyah +atticus +aubreana +aulora +aureliana +avabella +avaiah +avalea +avan +avanni +averey +averianna +avett +aviela +aviendha +avriel +axel +ayen +ayianna +aymar +ayushi +ayviana +ayzel +azania +azaylea +azelya +azira +azka +azyah +azylah +baeleigh +bareerah +bebe +bee +belina +bemnet +berklie +berta +besan +bessy +betul +betzabel +bijou +bindi +bismah +blakeli +blessed +blimie +bora +braley +breina +breklyn +brenae +breslynn +briggs +briona +briyana +bruna +brylin +brynlyn +brynnlea +calii +callieann +cambryn +camela +caralee +caramia +caren +carlia +carlyann +carlyle +carra +carrera +cash +caydance +caydee +cayli +caylynn +celesta +chaise +channah +charla +charlestyn +charliann +chayce +chriselle +christalyn +cici +ciella +ciena +clary +cloie +cobi +colbi +colton +connelly +coralei +corazon +coree +coryn +corynne +courtland +credence +czarina +daenarys +dahliana +dai +dailin +daizee +daksha +dalyah +damilola +danahi +danasia +danea +daneli +danelle +daniyla +dannya +darleny +darlynn +darrielle +daryah +dashly +daveena +daviona +davonna +dean +deandra +delayah +deleah +deliana +demmi +demya +deniya +denylah +deriyah +destanie +destine +devan +deylin +dhwani +dhyana +diary +dila +dilnoor +dimitra +diyana +djeneba +dmyah +dnylah +domonique +doria +draizy +dreama +dreyah +drithi +dulcinea +dustie +dutchess +eavan +ebunoluwa +eddison +edeline +edelweiss +edessa +edythe +eevi +effy +eilany +elaijah +elainah +elasia +elenah +eleven +elexia +eleyah +eliahna +elianne +elisheba +elitza +eliyanna +elizbeth +elizebeth +ellani +elliannah +ellianne +ellieann +elliemay +elloree +elyna +emalyne +emanuelly +emeryn +emila +emmabelle +emmajo +emmalea +emmalise +emmary +emmelynn +emmeri +emmorie +emmory +emnet +empriss +empryss +emreigh +emryss +emya +emyiah +eponine +eriah +erie +erisha +eseta +eshika +essi +euphoria +evangaline +evarose +evaya +evelette +everlei +evienne +evoleth +evora +ewaoluwa +ewelina +fabeha +fama +fathi +faviola +fe +federica +findley +finola +fionnuala +franklin +freddie +fynleigh +fynn +gardenia +geniyah +gentri +gentrie +ginevieve +gita +gitel +giuliette +goodness +graclynn +graziella +guiliana +guillermina +gurmehar +gwenna +haila +haiti +halaina +hally +hampton +happy +harleyquinn +harriette +harshika +hart +harvie +hasanat +hasini +hasley +hasti +haylo +hayzley +hazlie +heela +hestia +hibah +hibo +honour +hooria +hopelynn +hser +iara +idamae +idania +iliyah +illyria +ilwad +ima +imoni +inas +indee +indiya +indyah +insiyah +irelynd +iridessa +isabelly +ishaani +ishya +issabela +italee +itza +itzell +ivett +iyani +jaanai +jacari +jack +jaeli +jaelyne +jahlaya +jahlia +jahniah +jaily +jaislyn +jaiyanna +jakyah +jakyia +jaleena +jaleiah +jalexa +jalyrica +jamilette +jamisen +jamyia +janat +janee +jannel +janneth +jannette +jariana +jarielys +jaritza +jariya +jaryia +jaryiah +jasmarie +jaxie +jaycelynn +jaydence +jaylaa +jaylea +jaylynne +jazarah +jazell +jazzalyn +jazzmin +jeana +jemini +jenalee +jenavi +jenavie +jeneva +jennalee +jennavie +jenova +jentrie +jeralyn +jernie +jessabelle +jessly +jiayi +jihanna +jocee +joel +joelie +joelys +jolisa +jolyn +jordann +josee +juliah +julianie +juliannah +juliany +jury +justis +jwan +kacelyn +kaelie +kaesyn +kaielle +kaileena +kailor +kairah +kairos +kairy +kaizlynn +kalaiyah +kalii +kalylah +kamarri +kambreigh +kamillia +kamina +kanisha +kanna +karielle +karimah +karine +karleen +karliyah +karrie +karthika +kashi +kassaia +kassi +katalia +kathie +kathryne +katieann +kauri +kayelee +kayleana +kaylonnie +kayonna +kaytlin +kazi +kealani +kealohilani +keerthi +kehlanni +keloni +kemma +kemonie +kenniyah +kennley +kennya +keoni +keslynn +kessa +keylen +keylie +khailee +khamani +kharisma +kharlee +kharsyn +khaya +khilynn +khyrie +kierah +kilyn +kimbria +kimiya +kimmie +kimmy +kinga +kinsely +kmiyah +kole +konstantina +korrah +korrie +korrina +kourtnee +kyann +kyari +kye +kyelle +kyna +kynzlei +laaibah +lada +lailee +laionna +lais +laisha +lakeyn +lakiyah +lalitha +lamiah +lamis +lannah +lanya +lanyla +larue +laryiah +laryssa +latrice +lauretta +lavenia +layanne +laylarose +layoni +lazaria +leahna +leddie +leelani +leeonna +legacii +legna +letitia +levaeh +lexee +leyli +libbie +lilias +lilybeth +lilymarie +lindi +linna +linnie +liyanna +lizet +lizmarie +logynn +lorelle +loriann +luciella +lucyana +luelle +lulani +luzia +lynnae +lynnon +lynsey +lyrika +mabree +macaria +maclynn +madai +madani +maeci +magic +maguire +mahlet +mairyn +makhyla +makyiah +makynli +makynzi +maleaha +malkia +malonni +manaia +manasvini +mang +marajade +maree +margareth +mariaeduarda +mariaguadalupe +marialuisa +mariavictoria +mariem +marifer +marija +marika +mariyanna +marlina +martie +marty +marvelous +marycatherine +maryjo +massa +matayah +mattelyn +mavie +maybree +mayme +maysie +maysoon +maytal +mazy +mckaylee +meabh +meba +meia +meilyn +meka +melaine +melaya +meli +meliani +mella +mellody +mercie +mercury +merit +merrin +mery +miella +miesha +mikaylee +mikel +miki +mikka +milarae +milea +minal +miraclle +mireia +mishal +mishell +mishti +miski +miyabi +miyla +miyu +monserratt +monzerrat +morelia +moriya +mosley +mulki +muska +mychelle +mylayah +myranda +naarah +nahlani +nakari +nakyia +nalina +nalla +nanami +naomii +naomika +nash +nashaly +nasira +nasiya +nation +navea +navee +naw +nawaal +nayari +nayva +nazanin +nazari +nazariah +naziah +neera +nefeli +nehal +neko +nelya +nene +nerissa +neya +neylan +neylani +nickole +nieve +nijah +nikolina +nithila +niyanna +noami +noell +nolia +nollie +nouri +novalei +nurah +nusayba +nyalah +nyanna +nyarai +nylia +nyri +nzinga +oakland +oaklea +ogechi +ohanna +oluchi +oluwademilade +oluwajomiloju +oluwatobiloba +omaria +omi +onalee +onika +orabella +oria +oriane +osinachi +oyinkansola +paeton +panagiota +parrish +parys +pax +paxley +payge +peightyn +penley +persephanie +philomina +pihu +pollyanna +pragnya +prajna +prosper +prosperity +psalm +psalms +quinzel +raeli +raeliegh +rainn +raiyah +raiza +ranim +ranyah +rashel +raylah +raylei +rayyan +reagyn +rechel +reef +rehema +reiko +reilyn +reizel +remedi +reyla +rhegan +rhone +rhyder +rhyen +rianne +rigley +riki +rileyann +rini +riniyah +rithanya +riverly +rmani +roen +rohan +roop +rosalynne +royel +ruba +rubina +rukiya +rune +ruweyda +ryane +ryelyn +ryka +saanjh +saaya +sabriyah +sadan +sahab +saint +salimah +samarra +samyiah +samyria +sandrine +santanna +saraia +saraii +saralynn +savea +savera +saxon +selen +sema +seraphima +serenidy +setayesh +sevana +shadow +shakti +shalynn +shamiah +shani +sharaya +shaylene +sheina +shenandoah +sherilyn +shrika +shulamis +sian +sianni +sidratul +siennah +siera +silje +silvie +simrah +sinaya +sirine +siyanna +skya +slone +smrithi +soma +soniyah +sonoma +sophea +sophi +sophiamarie +soraiya +southern +sparkle +srinidhi +steeley +sukaina +sukayna +sunset +surina +suvi +sway +syla +symphoni +taeya +tahiya +taisha +taisia +talullah +tariya +tashi +terriona +terriyah +thania +timiyah +torrey +traniyah +treslyn +trezure +trystan +ulyana +ulyssa +umaiza +urwa +vaia +vallery +vallyn +valora +varvara +vaya +veeha +velvet +veronique +vibha +vienne +vismaya +vitoria +viva +vivika +vivyana +wafaa +warren +waverlee +weatherly +williow +winn +winterrose +wrynn +wylee +xaiya +xiara +xyleena +xyra +yailyn +yalani +yalina +yamilah +yaminah +yancy +yanessa +yardley +yarethzi +yarexi +yariela +yina +yosselin +yue +yuleimy +yuliett +zadaya +zaeleigh +zaharah +zai +zaily +zakyiah +zaleyah +zamina +zanari +zane +zannah +zaraiyah +zarria +zavayah +zaveah +zaydie +zaylin +zelenia +zellah +zenayah +zenayda +zeni +zephyra +zhoe +zineb +zitlali +zixi +ziyla +zoeyjane +zoiee +zulma +zurielle +zyionna +zymira +aaisha +aalana +aaleah +aalijah +aaliyan +aamna +aaryah +aarza +aashka +aazeen +abbagail +abha +abhigna +abida +abigaile +abigailrose +ablakat +adai +adalaina +adaleya +adalyna +adam +adan +adaria +addlyn +adellyn +adena +adesire +adiana +adilyne +admire +adonia +adreana +adriann +adryana +adylee +aeiress +aelianna +aerilynn +aerolyn +aevah +africa +agathe +ahlaam +ahlai +aiana +aidah +ailia +ainoah +airianna +airyana +aisa +aissa +aiyannah +aizley +akeira +akhari +akshitha +alaira +alajah +alannie +alayha +alayshia +alberta +aleece +aleemah +alegra +aleighna +aleni +alera +aleria +alexandrya +alexx +aliha +alilyana +alisandra +alithea +aliviya +aliviyah +aliyahna +allani +allia +alliemae +allysandra +alonni +alyani +alyannah +alyia +alynah +amadi +amalah +amanat +amariona +amauria +amazin +ambrie +amea +ameli +amil +amilyn +amrit +amrita +amrutha +amyna +amyracle +amyriah +anabeth +anabiya +anaila +anaiz +anaiza +analuisa +anamta +ananiah +anaveah +andilynn +andreia +anea +anelis +anelisse +anelys +aneri +aneth +angelyna +angelynn +aniayah +anicia +annalysia +annasofia +annebelle +annelisse +annica +anniya +annorah +ansa +anu +anyelina +aoibheann +aponi +apple +aqua +arabel +aradhana +araia +aralia +arayiah +archana +aretzi +arfa +aribah +ariea +ariell +arii +aristea +ariyel +arlenne +armanie +armonni +arna +arra +arrayah +arriella +arrington +arrya +arshiya +artemisia +aryianna +ashani +ashaya +asja +aslin +aston +athanasia +athira +athziry +atlanta +aubrea +aubrionna +aubryana +aubryanna +audia +audianna +audrinna +aunesti +auriah +auroara +auryn +avajean +avalisse +aveen +aviani +avienda +avishi +avishka +avorie +avynn +axelle +ayasha +ayela +ayira +aymee +aynara +aynsley +ayomikun +ayslee +ayten +ayvee +azadeh +azaelea +azaleya +azana +azella +azhara +azmariah +azyiah +azyla +baelynn +bahja +banu +bassy +baylea +beasley +beautifull +belia +bellagrace +bess +betel +bettie +beyla +biak +biannca +bobby +bodie +bostynn +braeley +braely +braylah +braylei +brayli +breklynn +brendaly +brendalyn +brexli +breyah +briannah +briellah +brielyn +brightly +briony +brittain +britten +brittish +brittlyn +brodi +brookelynne +brooklee +brooklen +bryli +brylinn +cadee +cadynce +calila +callalily +callisto +calloway +camani +cameo +camillah +cammy +cana +cannon +caralina +carely +carmin +carolynne +casie +cataleah +catileya +cayetana +caylah +caylei +cedra +ceriyah +charleen +charline +chella +cheri +cherise +chesley +chesnee +chi +chrisley +ciela +cindi +cira +clarabella +collyn +coralai +coralina +corrigan +corrin +corrinne +coumba +crimsyn +crislynn +cristin +cristy +crosley +crystiana +cyara +cynai +daeja +dalery +dalida +dalynn +damian +damyiah +danari +danerys +dannae +dannica +danyka +dari +dariella +darien +darly +darra +dava +daveigh +davinna +dayanne +daylyn +daysie +dayzee +dazaria +dearri +decklynn +deeksha +dehlia +deidra +dekota +delight +delsa +demaya +demeria +demoni +denasia +denaya +denice +dennise +derionna +derricka +deserae +dessie +deyanira +deyra +dezariah +deziya +dezlyn +dhyani +dianey +dilcia +dillynn +dilnura +dione +disney +dollie +dorianna +dory +dovie +dymond +dyna +eboni +edom +eiko +eilani +eimie +eimmy +ekam +elaiyah +elania +elcie +elegance +elenamarie +eliannys +eliena +elilah +elim +eliska +elky +ellason +elleah +elliee +elliona +ellisa +elliyah +elliyanah +ellowynn +elona +else +elsey +elsi +elyannah +elysian +embyr +emie +emilene +emmalisa +emmaree +emmersen +emmielou +emmilynn +emora +enylah +enzlie +eridani +erionna +eriyonna +eslie +esmi +eulalie +evamae +evanee +evely +evelynrose +eveyln +eviee +evlynn +evon +evvy +ezria +eztli +faithe +fallynn +fareedah +farris +farzona +faven +faylee +felicie +fina +finlay +forest +francie +gabbie +gabriana +gabriele +gael +galiana +gargi +garima +garner +gavin +gayle +gazal +gena +gene +genelle +geonna +georgeanna +geri +ghaida +giahan +giannella +gili +gionni +giordana +glorianna +graylen +grethel +greylyn +greysi +griffyn +grisha +guilianna +gwyndolin +haani +haasini +hadarah +hadessah +haedyn +haliyah +harika +harloe +harrison +hawi +haydn +hayli +hazen +hedaya +helem +heliana +hend +hendryx +hennessey +henri +henya +hetvi +hialeah +hikma +himani +hinley +hollynd +hyacinth +ibukunoluwa +idara +idhika +ihsan +ikra +ikran +ilda +ileanna +iliani +imarah +inaayah +indika +ineza +inika +ionna +irianna +irish +iry +isara +isatu +iselin +isobella +issabel +ivannah +ivon +ivry +iyona +izetta +jadee +jadence +jadie +jaelie +jahanna +jahdai +jaiel +jailia +jakhia +jakya +jakyrah +jalaina +jaleeya +jaleiyah +jaleya +jaleyza +jamayah +jamea +jamee +jameia +jamey +janaiah +janani +janaye +janayla +jannely +jannet +jara +jaselynn +javia +javiana +javiyah +jaycelyn +jaydan +jaydee +jaydyn +jaylena +jaylyne +jayonni +jazara +jazline +jazyah +jazzlin +jeena +jelany +jenai +jenesys +jeni +jeniah +jeniya +jennelle +jera +jeraldine +jeslynn +jessalee +jessamae +jessamyn +jessilyn +jiavanna +jihan +jinan +jiyah +jleigh +jocelynne +johanne +johany +johnae +joia +jola +jolissa +jolyne +jonathan +jones +jordie +jorgie +josephyne +jovanni +jozi +juelle +juhi +julez +juliahna +julina +juliyana +kaaliyah +kaashvi +kadi +kadidja +kadison +kaegan +kaelen +kahmora +kailahni +kailene +kainaat +kairie +kajsiab +kalaia +kaleeah +kalessi +kaliea +kalis +kamaree +kamariyah +kambrey +kameah +kamella +kameria +kamile +kamiylah +kamlyn +kamoria +kamyrn +kandyce +kanya +kanylah +karalina +karee +karilyn +karlah +karyna +kaselyn +kaslyn +kassady +kassiani +katalea +kataleena +katalena +kati +katniss +kaura +kaydin +kaydynce +kaylia +kayliah +kaymani +kayona +kazaria +keaira +keerthana +kehlanii +keiani +keigan +keighan +keiley +keissy +keliana +kelleigh +kelliana +kelsa +kendrie +kenedee +kenjal +kenlyn +kentleigh +keria +keslie +kesslyn +ketzia +keyarah +keyarie +keyarra +keyoni +khadra +khailani +khalayah +khaleia +khalis +khamilah +khamille +khamora +khamryn +khleo +khloi +khouri +kianah +kiannah +kianni +kimi +kimoni +kina +kinda +kinlynn +kinnsley +kinslei +kinzi +kiona +kismet +klarity +klyn +knoxley +koey +koko +koriana +kouri +kourtni +kristell +kritisha +kruthi +kseniya +kushi +kyan +kyilee +kyleana +kylianna +kylieann +kymberly +kynedi +kynnleigh +kynsli +kyreigh +laelyn +lakia +laklyn +lakoda +lalah +lamyiah +lanea +lanee +lanette +laraina +larsen +laryn +lashawn +latavia +laurelai +lauriana +lauriel +lavae +laveya +lavonna +laylaa +layona +layonni +leahny +leala +leea +leeanne +leeasia +lehna +leighanne +leilanny +leily +leilyn +lekha +leniyah +lenorah +lesleigh +lilianah +lilium +lilliani +lillyanah +lillyannah +lillyona +lillyrose +lilykate +lima +lindsy +linlee +lissandra +lisset +lizabella +lizah +lolade +lorina +lorine +louann +loukya +loyaltee +lozen +luanne +lucetta +lucilia +lucretia +lucyann +lucyanna +lulabelle +lupe +luthien +lyann +lydiana +lydianna +lynzee +ma +macarena +maciee +madalin +maddisen +madely +madicyn +madinah +madyx +maebh +maedot +maella +mafata +magdelyn +mahelet +maileen +mailynn +mairim +makeena +makinleigh +makylie +malai +malaijah +malan +malayja +malaysiah +maleigh +maleiya +maleiyah +malibu +marae +margalit +margarette +mariateresa +marijose +mariko +maristella +marjona +markiyah +marlayah +marlea +marleen +marlynn +marren +marshay +maryjean +marylu +matilynn +mattalynn +mattingly +mauriana +mawada +maxi +maxx +maye +mayella +maziyah +mazzie +mckinnleigh +mckynleigh +meekah +megyn +mehak +meily +meissa +meital +meleane +meliza +mely +meradith +merliah +meyer +miaa +miabelle +micaella +michaiah +michayla +micheala +michonne +mielle +mihaela +mikalyn +milcah +miliah +miliyah +milka +millian +minami +mindel +mirajane +mishel +mitra +miyako +moani +mollee +momoka +montanna +montzerrat +morgane +morning +munachi +munachiso +myan +mykaela +mykelti +myliah +mylynn +myrikal +naeomi +nahal +nahira +nahlah +naiyana +naleigha +nalini +nancie +natalea +natalyah +navika +naylaa +nayleen +naziyah +nealy +neelah +nehir +neidy +nesta +nevaehrose +nevena +nevia +neyah +neyda +neyland +neziah +ngun +nhyira +nianna +nigeria +nihitha +niko +nimco +niyana +niyomi +nneoma +noga +nohemy +noran +nourah +nourhan +novahlee +nuriyah +nyaira +nyala +nyara +nyayla +nyeema +nyemah +nyilah +nyima +nylie +olamide +olani +olevia +ondine +onna +onnika +onyinyechi +orchid +orya +ottavia +oya +ozzie +paitlyn +paizly +pascale +patti +paysen +paysleigh +paysley +payslie +payzlie +pera +persis +peytyn +phia +phoebie +pieper +pierson +prakriti +pranika +prapti +priyanshi +quinleigh +qwynn +raahi +raavi +rachana +raea +raelah +raelani +raelie +raevynn +ragen +rahil +raiah +raigyn +rajah +rakel +ralyn +rashi +ratzy +rayelynn +rayhana +rayley +raynn +rayssa +rayya +rebekka +rechy +reighna +reis +remas +remilia +renlie +reyanshi +reynolds +rhealynn +rhemy +rhylen +rickie +rigby +riham +rika +rilla +rionna +rishvi +riverlee +riyann +riyaq +riylee +robbi +rocket +rollins +romana +rominna +ronja +ronza +roree +rosalea +rosalita +roseleigh +roselena +roslin +rossie +rosslynn +rozelle +rozie +rubyrose +ruhama +rukaya +ryana +sabra +sabrine +sadhana +saesha +sakiya +sakshi +samaa +samaiyah +samani +samarie +samayra +samerah +sammantha +samyia +samyukta +sanaz +saniyyah +sanna +sanora +sanyah +saory +saphyra +sarabella +saraphina +sareya +sarika +sarya +satya +savine +savvi +sayana +sayyora +sebella +seeley +seidy +selayah +seniyah +serai +serenitie +sevin +seyla +shadae +shaela +shailey +shalaya +shambhavi +shandiin +shanty +sharlette +shavon +shavy +shazia +sheindy +shelsea +shenaya +sheyli +shila +shilynn +shivanya +shiyu +shreenika +shritha +shya +shyleigh +sieanna +sifan +sihaam +sithara +skii +skyah +skyelyn +skylaa +skyllar +socorro +sofina +sojourner +solarah +solaris +soli +soliha +solomiya +solstice +sophiah +sreya +starlee +starlit +starlyn +stirling +stuti +sufia +sumaira +summerlynn +swecha +sylvanna +synia +tailor +taja +tal +talayeh +talayla +talena +talina +tamika +tamora +tamra +tamryn +tamyah +tamzin +tamzyn +tanna +tanvitha +tasfia +taygen +taylore +taylormarie +teagann +teasia +tejasvi +temprance +teriyah +terran +thayer +theo +theona +theory +theron +thomas +tiah +tiger +tillian +tiye +toleen +torren +triana +trinitie +trish +trishika +trixie +trudie +truely +trust +tuana +tyriana +tytianna +tzipporah +ubah +uliana +umme +universe +uri +urielle +vallerie +venna +viaana +victoire +victorie +vira +vitalia +vlada +vyolette +wakely +wania +weylyn +wiktoria +willoh +wimberley +winston +xael +xana +xander +xariyah +xenovia +xyliana +yachet +yaelle +yalini +yanieliz +yanitza +yaqeen +yarel +yareliz +yasira +yaxeni +yeily +yeraldin +yichen +yiran +yitzel +yixin +yiyi +yosra +yovana +yuka +yuma +yutong +yzabelle +zadia +zafiro +zahvia +zaineb +zakyia +zakyra +zalah +zalani +zamorah +zandaya +zareena +zareth +zarie +zaryia +zaylei +zaylen +zaylyn +zenab +zeppelyn +zerah +zerena +zeruiah +zeya +zhaviah +zhyon +zikra +zilah +zinachimdi +ziomara +zirah +zirwa +zissel +zohar +zorina +zuleima +zulie +zulmy +zurii +zyannah +zyliah +zyna +aabriella +aadhyareddy +aadhyasri +aafiyah +aakriti +aaleeyah +aaleigha +aaliyahrose +aaliyana +aalya +aana +aarabhi +aariel +aastha +aayah +abcde +abeera +abelina +abigial +abisola +abrah +abrienne +abuk +acari +achol +achsah +adaira +adalayna +adalea +adarah +adayla +addelynne +addiline +addyline +adeeba +adeli +adelis +aderinsola +adesewa +adhithi +adianna +adiba +adila +adithri +adonis +adrien +advaita +adylyn +aelani +aero +afina +afra +agam +ahavah +ahed +ahitana +ahmara +ahmarie +ahmi +ahmia +ahmirah +ahnika +ahnna +ahraya +ahriana +ahrie +ahriya +ahviana +aibhlinn +ailanie +aile +ainzlee +ainzley +aiylah +ajourney +ajsa +akai +akeema +akhila +akhira +aki +akiera +akiva +alai +alandra +alanoud +alarah +alayja +alayzia +aleira +aleisa +aleksia +aleli +alenah +alexandrina +alexianna +aleynah +aleyshka +alfonsina +alicea +aliegha +alila +alilet +aliliana +alisanne +alissia +alivea +alivianna +alleson +aloha +alonie +alori +alouette +alula +amabella +amala +amali +amaranth +amarielle +amarise +amarri +ambriella +ameirah +ameyali +ameyalli +amiee +amielle +amiliah +amillianna +amita +ammarie +amogha +amoya +amyria +amyrie +anahia +anaisabel +anarely +anaria +anastazja +anatalia +anayalee +anayat +anayiah +anaylah +anberlin +anfa +angelene +angellee +angelmarie +aniella +anikka +aniyha +anjalee +anjani +anjelika +anjolie +ankita +annabellee +annahi +annakate +annaleise +annalene +annalize +annamay +annecy +annessa +annikah +annisten +anqi +anshu +antaniyah +anthonia +anwita +anyely +anyfer +anysia +apsara +aquilla +aradia +araly +arami +araoluwa +ardis +arelia +arelly +arezo +ariagrace +arianis +arianys +arien +arieonna +arieya +arijana +arinya +ariyon +arjwan +armiya +arni +arraya +aryann +aryannah +aryiana +arzu +asami +ashe +ashiya +ashlie +ashling +ashtin +ashwaq +asiana +astyn +ataleigh +atena +athenea +athenna +atia +atina +attica +aubrianne +aubriegh +aubrina +aundraya +aunica +aunika +aurabella +auralia +avaeyah +avalei +avaley +avanicole +avanthika +aveda +avena +averygrace +avian +aviel +avighna +avisha +avreet +ayak +ayame +ayane +ayara +ayiana +aylanni +aylia +aylyn +aylynn +ayna +aynslee +ayomi +ayvianna +ayzah +azaela +azaelia +azaiah +azaila +azalaya +azaleyah +azalie +azaneth +azealia +azelyn +azera +azlee +azoria +azyia +azza +baelee +baelyn +bahati +baisley +bambi +banks +banner +basmah +beimnet +bellamia +bellen +bena +benedicta +bentlie +benton +bernadine +besa +betzayda +betzy +bhavika +bia +bilge +billy +binah +binti +bisma +blayre +blessence +blimi +bradi +brandon +braniyah +braylinn +brayzlee +brendaliz +brexlie +brexlynn +breyer +breylin +breyonna +briannie +brindle +brinklee +brisha +brisia +bristal +britani +britley +britlyn +britny +brittan +brixxon +briya +briyanna +briyelle +brogen +brookleigh +brunella +brya +bryna +brynnli +bryony +cadyn +caedyn +cailah +caily +cala +calder +caledonia +caliann +caliope +calley +calliana +calyse +calyssa +cambrielle +cammi +camoni +camree +caniya +capria +cardi +caridad +carine +carlita +carmelia +carmi +carolanne +caselyn +cashmere +cassiel +castiel +cataliya +catheryn +catie +catilaya +cayliana +caylor +caylyn +ceana +cecillia +celebrity +celise +celiyah +cerena +cerina +chaarvi +chace +chaithra +chamberlyn +chandra +chania +chaniyah +chantell +charlieanne +charlirose +chaselynn +chasya +chayah +chelsi +chessa +chiamanda +chicago +chimbusomma +chinyere +chisimdi +chiziterem +chosyn +choyce +chris +christi +christlyn +christmas +chrysanthemum +chumy +chyann +ciarra +cinder +clairissa +clarita +comfort +contessa +coralline +corinthia +corri +courtnee +crescent +crisbel +crystel +curie +cyana +cybil +cydnee +cylee +cyria +cyrus +daejah +dailee +daiya +dalari +dalayna +daleny +dali +daly +dalyce +damyia +damyra +danait +danette +danielly +danielys +danilah +danilyn +danity +danniella +danyel +darelyn +dariany +darie +darielis +dariona +darionna +darlenys +darleth +dashia +davanee +davida +dayah +dayanis +dayjah +dayli +dayva +daziya +deanne +dearia +delahni +delaylah +delaynee +delena +dellah +delphina +delsie +demy +demyiah +denisa +dennisse +deona +deriah +derya +desani +desta +destani +destyn +deva +devanny +deven +devri +deziray +dezlynn +dezyre +dhani +dhanvika +dhatri +diari +diego +dilan +dilani +dioni +diore +diyora +djuna +dliyah +dlylah +dmoni +doha +donella +doriane +dovey +dreah +drisha +dusti +dvorah +dylin +dyxie +eadie +ebenezer +ece +edaline +eddy +edel +ehva +eilleen +eiman +eisa +eladia +elaena +elahni +elaiza +elanah +elea +eleany +elenie +eleri +elham +eliannah +elianni +elidi +elilta +elisandra +elita +elite +eliyahna +elizamarie +elke +ellajane +ellara +ellea +ellice +ellyanah +ellyott +elmina +elsiana +elya +elyanah +elyce +elycia +elyon +elyze +elzie +emayah +embri +emereigh +emerleigh +emile +emmalouise +emmari +emra +emyla +emyrie +enedina +enessa +erian +eriyanna +ernestina +eryan +esa +esbeydi +eshani +esmira +espn +essynce +estephany +ettalyn +eufemia +eugenie +euna +eunique +evalette +evalia +evanora +evans +evelena +evella +evellyn +evelyngrace +evian +evren +evyanna +ezoza +faatimah +fadilah +fajar +fareeda +farheen +farhiya +farisha +fate +fayga +faylen +fedora +feigy +felice +feliciana +fenyx +ferryn +fey +filippa +finnegan +firdaus +fischer +fisher +fletcher +florentina +flower +folasade +ford +forrest +fotima +fotini +franziska +frejya +frumi +furaha +gabbanelli +gabryelle +galaxie +galylea +geles +genessy +genoveva +genovia +gentree +ghita +gianah +giani +gianina +giannie +gilana +gilly +gissela +gizella +glori +glorious +goldi +graceland +graham +graycelynn +greeicy +greidy +gretl +griselle +gryffin +gursirat +gwenda +gynesis +hadar +haddi +hadicha +hadyn +haeven +hafiza +hagar +hajer +halani +hamda +hamida +hamna +hanako +hannahrose +hannie +hanny +hanvi +harly +harmonei +harpergrace +harshini +haseya +hau +hawley +hawo +haysley +hayzleigh +hazal +haze +heera +heilyn +heloise +hendy +herlinda +hermela +hermosa +hilde +hiliana +hodan +holliday +hollin +hoor +hortencia +hosna +hrisha +huma +humayra +humna +hynlee +hypatia +ian +ibtihaj +idali +idalina +iesha +ifeoma +ifra +ifunanya +ifza +ihana +ikora +ileen +ilithyia +illeana +imaya +imery +imina +inayat +inci +indiah +irais +irisa +iryna +isana +italie +ivalee +ivani +ivvy +iwinosa +izna +izumi +jacobi +jacquelyne +jadeyn +jadoir +jaeliana +jaella +jahniyah +jaiani +jaidalyn +jaidence +jailei +jailine +jaira +jakalyn +jakayln +jakelyn +jakylah +jalaila +jalana +jalee +jalei +jalonni +jalyla +jalyric +jamella +jamera +jamese +jamilia +jamilyn +jamiria +jamiyla +jamyrah +janaa +janaia +janari +janeah +janelis +janesa +janese +jani +janielis +janielys +janisha +janissa +janovia +jarelyn +jasiya +jasly +jasmynn +jasreet +jatzibe +javaya +javeyah +jaxi +jaxlynn +jayahna +jaydalyn +jaydi +jaydin +jaydis +jaydynn +jayelle +jayia +jaylany +jayleana +jayleene +jaylissa +jazari +jazelyn +jazira +jazmynn +jazuri +jazzmyne +jedidah +jedidiah +jekalyn +jenaiah +jenay +jency +jenee +jenevi +jennalynn +jennesis +jennika +jericha +jermanie +jermia +jermiya +jerriah +jerrika +jesika +jessey +jettie +jeveah +jewelianna +jeylah +jeyleen +jezabell +jhenae +jhordyn +jhori +jhoselyn +jimi +jimma +jina +jingyi +jla +jmya +joannie +joellen +johara +jolei +joliana +joliyah +joniah +joniyah +josaphine +josiana +josielynn +josleny +josy +jovienne +jovina +joyous +jozefina +jozelynn +jozy +juleah +juleigh +julianah +juliannie +julliana +jullianna +julyana +jurnei +kacyn +kada +kade +kaelahni +kaelanie +kaeloni +kahlee +kahleia +kahlila +kahliya +kaiana +kaionna +kaislei +kaislynn +kaiyana +kalaiah +kalana +kalanii +kaleece +kaleesa +kalen +kalese +kalesi +kaliann +kalin +kalisi +kalisia +kaliyana +kalliopi +kalolaine +kalon +kalonnie +kalypso +kamalani +kamar +kamayah +kamela +kamoura +kamylle +kamyrah +kanella +kania +kanon +kanyah +kanyon +karaleigh +karenna +kareny +karinna +karisa +karlin +karmel +karmon +karmynn +karolyne +karstyn +kashae +kashaf +kashlee +kashton +kasidy +kassadi +kassey +kastyn +kasumi +kathaleia +kathyrn +katilaya +katiya +katori +katrielle +kawena +kawsar +kayari +kaydie +kayelyn +kayliee +kayliegh +kaylonni +kaymarie +kaymoni +kayoni +kaytee +kaziyah +keavy +keeghan +keeleigh +kehaulani +kei +keili +keilin +keilynn +keimani +keionna +keirstin +keitlyn +keity +kelbie +kelcey +kelechi +keliah +kellyanne +kelty +kemorah +kendahl +kendraya +kenedy +kenidee +kenndi +kennedii +kennidee +kennzie +kensy +kentlee +kenz +kenzlynn +keora +kerissa +kerlyn +kerra +kerrie +kerstin +kesia +ketziah +keviana +keyera +keziyah +kezlyn +khadicha +khadijatou +khalees +khalina +khamaya +khaniya +khassidy +khloei +khyri +kiele +kierstin +kimberlie +kimble +kimimila +kinze +kinzlie +kirpa +kisa +kitt +kitty +klair +klaryssa +kliyah +kloni +knightly +kohen +kollette +kollyn +korbin +korrin +korrine +kosisochukwu +kourtnei +krishvi +kristabelle +krosby +kruz +krystalynn +krystel +krystin +kueen +kwyn +kyaire +kyanni +kycie +kyiana +kylann +kylena +kymberlee +kymberlynn +kymbrie +kymiah +kynnsley +kyriana +ladonna +laelle +lagertha +lahari +lailanie +lailiana +laini +lakenzie +lakiya +laklynn +lanay +landen +landynn +lany +lanyiah +laren +larimar +larina +lariya +larke +larsa +lauralynn +laureli +laurence +lavena +layann +layanni +layiah +laylynn +layney +laziyah +lealani +leandrea +leeloo +leeyana +leighlani +leilahni +leilanii +leionna +lenah +leonah +leone +leoni +lesa +leslee +leslye +letticia +lev +leyre +liandra +libbi +lika +lilliane +lillieanna +lilyah +lilyona +lilyonna +linah +lindie +lisabeth +liyu +loana +lochlynn +lokelani +loki +londan +loralye +loran +lorde +loreen +lorilei +lorrie +lory +louanne +loula +lovanna +lovelee +lubna +luccia +lucelia +lucianne +lucillia +lucyna +lulwa +lunagrace +lunamia +lunara +lundynn +lunetta +luvia +luziana +lyan +lylee +lyndy +lynkin +lynx +lyrique +lysette +lyudmila +mabrie +macari +macelyn +macelynn +maciah +mackenize +macklin +macon +madalyne +maddeline +maddielynn +madelene +madonna +madyline +maeby +maelynne +maevah +magenta +maggiemae +mahati +mahya +maiana +maicee +maidelyn +mailah +mairen +maisen +maislee +maislyn +maizi +majestic +makaiyah +makenlei +makensley +makenzlie +makenzly +makinna +makinsey +makkah +makynzee +malanna +malay +malaysha +malayzia +malee +maley +malinalli +malyla +malyn +manelyk +manhattan +maralynn +marcelle +marcelline +marena +mariadejesus +mariaines +mariapaula +mariapaz +maribell +marielis +marili +marimar +marisabel +marleigha +marlenne +marleyrae +maruska +marybelle +marycruz +maryevelyn +maryfer +marylee +marylouise +masey +masiah +maui +mauricia +mawa +mayani +mayara +mayu +mayuri +mckenize +mckensie +mckinzley +meda +meeya +mehtab +meiko +mekenna +melanii +melanin +melanye +melaysia +meliha +mellany +menorah +merelyn +meriah +merna +merola +merriam +merrill +meryn +meylani +miagrace +miamarie +miayla +michel +mickenzie +micki +midhuna +mikaelah +mikaiah +mikia +mikki +milca +milleigh +millena +milliani +milyana +minh +mirae +mirayah +mirela +mireyda +miriana +miriel +mitchell +mithila +mitsuki +mitzy +miyonna +moanna +modesire +momoko +monalisa +montserrath +muntaz +murray +mushtaq +muskaan +my +myaire +myari +myesha +mykal +mykel +mykenna +mykia +mylaa +myleen +myleena +mylei +mylove +myrcella +nabeeha +nacari +nadalyn +nadelyn +nahyla +naielle +naijah +nairah +naiylah +nakhyla +nakira +nakota +nakyla +nalaiah +nalaiya +nalaiyah +nalanii +nalany +namia +namiya +namyah +nandika +nanea +narayani +naria +narumi +narya +nasiah +natallia +natally +nataya +natilynn +natsumi +nayelly +naysha +nayvi +necha +neeka +neeley +neeti +neeya +nehlani +neilah +neiva +nelda +neliah +nelida +nereida +nesreen +netta +nevaiah +ngawang +ngozi +niesha +nikkita +nikoletta +nikyah +niliyah +nishtha +niyelli +noomi +norabelle +noralyn +norelle +noria +nouf +novaley +novaya +nuhamin +nyia +nyiah +nyila +nylaa +nyna +nyomie +nyrah +odesza +odile +oliviarae +oliviyah +oluwaseun +oluwatise +oluwatomi +omera +omni +onora +oonagh +orabelle +orian +ottilia +oyindamola +ozlynn +pailey +pailynn +paisly +paiyton +pansy +pareesa +parishay +parneet +paylen +paylin +paytynn +pearla +pearle +pearly +pele +pelia +pemberley +peneloperose +perrine +persayus +petal +peytan +phinley +phoenixx +polette +poppi +portland +posy +prabhleen +prachi +pragathi +pranvi +prescott +presha +pretty +pryor +pyrrha +quaniyah +quetzal +raely +rafif +rahi +raida +rainier +raiven +raleah +raliyah +ramata +ramey +rand +raney +ravin +ravleen +ravneet +rawdah +rayella +raylani +rayli +rayni +razaan +rebecka +rediet +reeves +reika +reily +rein +reinette +reizy +relena +rella +remilynn +remini +reminisce +rennata +renner +retta +reve +revel +reyanna +rhaya +rheanna +rheign +rhenlee +rhilyn +rhyon +rias +richlynn +rickelle +ridlee +ridleigh +righteous +rishita +riti +riverrose +roaa +robbyn +rocklynn +rodas +roiza +romilly +rosaelia +rosalynd +rosary +rosaura +rosealeigh +rosealina +roseleen +roselle +rosene +royalle +royaltii +rozalee +rozalie +roziyah +ruaa +ruah +ruari +rubiana +rubyann +rufta +rukmini +rula +rumor +ruqayah +ruqiya +ruthy +rwby +rydia +ryilee +rylenn +rylynne +rynley +sa +saarah +saaral +saarya +sabreena +sabrena +sahithi +sahory +saidah +sailer +sainabou +sairah +saje +salam +saliha +salmah +saloni +salsabeel +salsabil +samah +sameria +samhitha +samiksha +samrah +samsam +samyla +sanae +sancia +saniyya +sarahbella +saralee +sarinah +sarra +sarrah +sascha +saturn +savya +sawda +sawdah +sayani +seattle +seba +secilia +seila +semiyah +senai +seraiah +sereia +serenah +sesen +severine +seylah +shagun +shahida +shaily +shakirah +shalini +shaliyah +shalva +shalyn +shamara +shamaria +shamika +shanley +shannel +shantell +shariya +sharron +shatha +shaun +shayley +shena +sherlin +sheyenne +shire +shiva +shivika +shruthi +shwe +shyan +sibley +sigrun +sihi +siloam +siloe +silvanna +silvi +silviana +siqi +sisira +sistine +sita +sitora +skie +skylaar +skyland +skyley +skylinn +sofiana +sofya +soheila +sola +solani +solea +solenn +sonika +sophiea +sorrel +sorsha +sosefina +sosie +souad +soumaya +sovereign +sreenidhi +srisha +sruthi +starlette +starling +stasia +stassia +stellamaris +stephenie +stevee +stone +storii +storme +suhavi +sujey +sulamita +sundai +sunjai +suriah +sutherlyn +sutter +suyana +suzu +svana +syah +sydnei +syenna +symphonee +syren +syriyah +taaliyah +tacari +taia +tailey +taisiya +taizlee +takoda +takyla +taline +talita +tamela +tami +tamila +taniah +tanijah +tanitoluwa +tansy +tanyah +tanzila +tarini +taseefa +tasi +tatem +tatumn +tatyanna +tatym +tavi +tawny +taylani +tayonna +taysia +tayten +teairra +teana +tehlani +telia +tember +tereza +terralynn +terriah +tesley +tessah +tesslyn +tetra +teuila +teyona +teyonna +thyri +tianah +tiera +tillee +timara +tobin +tomasa +tonia +toriana +torrence +torriana +toula +toya +treniyah +trevi +treya +trinityrose +tris +tristian +tuba +tully +tulsa +twisha +tyjah +tymia +tyne +tynia +tzippy +umayma +urenna +uswa +valentyna +valli +valory +vaniah +vannesa +vanora +varna +vayah +vegas +veira +vena +venita +veralee +verenice +verina +versace +victori +victorious +vihaana +vika +viktoriya +vinisha +virtue +vitalina +vivie +vyctoria +wajiha +watson +waylyn +wellesley +wendi +willianny +xahlia +xailee +xaniyah +xanthe +xareny +xiah +xiclaly +xintong +xinyu +xiya +xylie +xymena +xzaria +yacine +yaelis +yafa +yamari +yami +yamile +yamina +yanel +yanique +yasuri +yeabsira +yelianny +yelina +yennifer +yenty +yihan +yoali +yolani +yoseline +yostina +yumiko +yuxuan +zabdi +zabria +zaelee +zaeli +zafina +zaharia +zaharra +zahriah +zaidy +zaima +zakaiya +zakayla +zalaiya +zalena +zali +zaliya +zalynn +zamyia +zanaiyah +zandra +zandria +zanova +zanyia +zareyah +zariaha +zatanna +zavanna +zaviyah +zaylia +zazil +zeenah +zel +zelah +zelilah +zeniah +zeyla +zhaniyah +zhaviyah +ziani +zihan +zillah +zilynn +zinachidi +ziqi +zira +zoely +zoelynn +zofie +zohemi +zohie +zorie +zoryana +zoyah +zriyah +zsazsa +zuley +zuree +zuriya +zyan +zyauna +zykira +zylynn +zyria +zyva +aabidah +aaheli +aalasia +aaleiyah +aaliana +aaliyha +aamaya +aamiya +aamorah +aaralynn +aarianna +aarie +aarilynn +aarini +aariona +aarunya +aaryanna +aava +aayliah +abigayl +abiya +abrea +abrey +abriah +abryanna +abygayle +adaiyah +adaleen +adallyn +adalys +adamarie +adanely +addalie +addelyne +addiemae +addieson +addilyne +adeeva +adelayda +adeliah +adelinn +adeliza +adelline +adellynn +adelyse +adiel +adiella +adilena +adileni +adilenne +adilia +adiline +adlai +adonai +adoniyah +adorah +adriene +adrika +adut +ady +aera +aeralyn +aerianna +aerolynn +aerynn +aerys +aesha +affinity +afsana +afsheen +agnia +ahlanni +ahliyah +ahmora +ahnylah +ahriella +ahzaria +aidalynn +aihnoa +aija +aileene +airalynn +airyanna +airyn +aisosa +akeyla +akeylah +alae +alaena +alan +alannis +alanya +alayaa +alazay +alazia +albee +albertina +albina +alease +alee +aleera +aleezah +aleezay +alegria +aleinah +aleiny +alejah +alejandria +aleka +alekhya +aleny +alery +alesa +alexsis +alexxis +alexya +aleynna +alfreda +aliena +aliia +alishia +alister +aliyannah +alizabella +alizeah +alizey +alizza +aljohara +allaina +allaire +allannah +alle +alleena +allysson +alohi +alpha +alyaa +alyanah +alyda +alyiana +alyonna +alyzae +amaara +amabel +amabelle +amahya +amaiia +amalee +amaly +amanie +amaranta +amariyana +amayha +amaziah +ambre +ambriel +amee +ameelia +amelea +ameliarae +amenia +ameri +ameriie +amerika +amiaya +amiira +amiiyah +amiko +amiley +amiliyah +amilli +amilliah +amine +amiri +amiriah +amiryah +amonee +amoriah +amorina +amorrah +amylee +amythyst +anabela +anabrenda +anae +anah +anahat +anahis +anahli +anaida +anaijah +analei +analena +analissa +analyssa +anapaola +anayelis +anayia +anaysha +andalyn +ande +andreanna +andree +andressa +andrielle +aneeka +aneira +anetta +aneya +anfal +ange +angele +angelea +angeleigh +angelisse +angellina +angelyne +anifa +anique +anisten +aniza +anjelah +annajames +annaka +annaline +annalissa +annamary +annavictoria +annelee +anneliz +annet +annison +anoush +anousheh +anran +anri +ansha +anta +antania +anthony +antionette +antonio +anura +anvee +anwen +anwyn +any +anyelin +anyi +anyliah +anzlee +aowyn +apolline +aquila +arabela +araea +araiah +arale +arelie +aretha +aretzy +arevik +argelia +ariaa +ariahna +arialynn +aricela +ariday +ariebella +arihana +arijah +arisbel +ariyelle +arli +arlington +armaya +armya +arnavi +aroosh +aroura +aroyalty +arrowyn +arryn +aryarose +arybella +aryonna +asena +aset +ash +ashai +ashara +asherah +ashlesha +ashlinn +ashna +ashriya +astor +astou +astraya +astrea +astryd +asuka +asyia +asyiah +athaleyah +atheer +athens +athulya +atifa +atiyah +attalia +attie +aubreelynn +aubreerose +aubreey +aubriannah +audrei +audreya +audreyanna +aunisty +aurbree +auree +auroragrace +aurya +avagail +avaia +avaiya +avajade +avajoy +avalin +avanell +avangelina +aveanna +aveera +aveleen +avelene +avenlee +averiella +averii +averlie +averykate +aviahna +aviyanah +avonleigh +awesome +ayarie +aydria +ayeesha +aylana +ayleah +ayleigh +aylena +ayli +aylianna +aylie +aylina +ayma +aymelia +aynoor +ayoni +ayriah +ayrin +ayverie +ayvia +ayzaria +ayzlee +ayzlin +azahara +azailya +azaleigh +azalya +azarria +azeemah +azhar +azori +azurie +azya +azzurra +baraah +bareera +bashy +baxley +baylyn +beatris +becklynn +beia +beily +belanna +belkis +bellamae +bellanova +benicia +beren +bergen +bethanny +betsabeth +bexli +bezawit +bilan +bilen +blakesley +blanche +blaykelee +blaykleigh +boe +bohdi +bradlie +braeya +braileigh +braizlee +brandalyn +brandee +brandii +breck +breckin +brekkyn +brendalynn +breniyah +brennex +breona +brette +breyanna +briani +briauna +brice +bridger +briea +brieanne +briele +bright +brightynn +brigit +brinna +brion +brionne +brittani +brixten +brody +bronwynn +bronze +brookley +bryann +brylyn +brynslee +bryonna +bryten +byanca +cabela +cacey +caedence +cailie +calah +caleb +caleena +caleya +caleyah +calianne +callaghan +calliah +calysta +camariya +cambelle +cambrea +cambriella +camina +camylah +camyra +canon +canyla +cariana +carisa +carleah +carleen +carleny +carmani +carmelle +carolyna +carrissa +cary +cason +cassey +cataleiya +catalena +cataliyah +catherin +catlyn +caybree +cayson +cecilie +cecylia +ceili +celenia +cella +cemile +cena +ceniyah +ceres +cesiah +ceyda +chamari +chancellor +chancey +chanler +chanley +chante +chardonnay +charlese +charlotterose +charlytte +chavi +chelsee +cher +chesa +chesleigh +chevie +cheyla +chikaima +chinenyenwa +chloeann +chrisann +chrissa +chrissie +christianne +christionna +christlynn +chyla +chyler +cisse +clarah +clarajane +clarie +claritza +clemence +cloud +coleigh +collynns +concepcion +connolly +constantina +consuela +corena +coriana +corionna +corissa +corlee +cortana +cylia +cyn +cyncere +cyrah +cyrene +cyriah +cyrine +dacey +daena +dahliah +daisi +dajanae +dakiyah +dakodah +dalany +dalay +dale +daleen +daleia +daleisa +dallys +dalton +dalyn +damarys +dameria +damila +damira +damonie +damyla +damyrah +danayah +daney +daniele +danila +daniylah +dannay +dannielle +dannielynn +daphanie +daraly +dareli +darelys +darline +darshi +dashae +daveah +daveney +davine +daviya +daylanie +daylia +daylynn +daysia +dazlyn +deangela +deann +deisi +dela +delayne +delcie +deleyza +delilahrose +delisa +dellarae +delmi +deloni +delyliah +demelza +demirose +denaiya +denalia +denaly +deni +denis +denni +deoni +dereka +derrica +derriona +deryn +desirey +deslyn +destanee +devanie +devaya +devlin +devna +deyonna +dezaria +dhrithi +dhruvika +dhvani +dianelly +diani +dianny +diksha +dilia +dilylah +dinora +dionni +diti +divija +divyanka +diyala +dmiya +doaa +doba +dolce +donovan +dontavia +dreamer +driana +drina +ecclesia +edelin +ediany +edin +edlin +edrielle +edwina +eera +eibhleann +eileithyia +eiliana +eimi +eirini +ele +elene +elesa +elian +elianie +eliara +elinna +eliona +elionna +elisabella +eliyannah +elizabethann +elizabethgrace +elizajane +elizeth +ellabelle +ellajean +ellanese +ellenie +elleny +elliani +ellieanne +ellissa +elliston +ellivia +ellynor +ellyssa +elonna +elorah +elsbeth +elys +elysabeth +elzada +emanii +embersyn +emela +emelya +emerii +emerys +emia +emiliani +emilygrace +emilymarie +emireth +emiri +emjay +emmani +emmelene +emmilou +emogene +emonee +emonni +emrynn +endsley +eniko +enisa +enley +enzly +enzo +erabelle +eralyn +eren +erendira +eri +erianne +eriyan +erleen +erlinda +ernestine +erva +eseosa +eshanvi +eslee +esley +eslyn +esmeray +estephania +estibaliz +etana +evagrace +evaleena +evalisse +evalyne +evangelene +evangelynn +evannah +eveanna +evelee +evelisse +evieanna +evika +evilyn +evonni +evyenia +ezariah +ezinne +ezralynn +ezrie +faeryn +fairy +faisa +faithmarie +fara +fardowsa +farhana +farhat +farwa +fatihah +fatumata +fayre +feiga +felicitas +felisha +feyre +feyza +ffion +fiammetta +fiore +fizza +foreign +francely +frayah +freia +freidy +fruma +fryda +gaea +gaige +galaxi +galena +galit +gamila +ganiya +garland +gatlyn +gea +geethika +genesi +genivieve +geovana +geraldyn +geralyn +ghala +ghalia +ghislaine +giahna +giamarie +gianelli +giavanni +gideon +gilah +ginette +giorgina +given +gowri +gracely +gracilynn +graesyn +graisyn +graylie +greidys +gretell +grisel +grizelda +guliana +gunner +gwendalynn +gwendolyne +gwendylan +gweneviere +gwenith +gwinevere +haby +hadalyn +hadasha +haddon +hadilynn +hadja +hadly +hael +hagen +haislynn +haja +hanae +hanai +hanaya +hanora +hanvitha +hanya +hara +haram +harlea +harlin +harmonni +harneet +harshitha +haruka +harvi +hatteras +haukea +haviland +havynn +hawwa +hayaa +haydan +haygen +hazael +hazelanne +heartlynn +heleena +heleyna +heli +hendel +henly +henzlee +hermelinda +hermonie +heylen +hifza +hilaria +hildy +himari +hollan +hollee +honorah +hooriya +houstyn +hurley +hutton +hyab +icey +ichika +idris +iknoor +ilaisaane +ilayda +ilee +ileene +ilian +ilianny +iliyana +imana +imane +inanna +infiniti +inori +intisaar +intisar +iolana +irah +iralynn +iria +irielle +isabellamarie +isadore +isata +isatou +isbella +ishaanvi +islarose +islee +isma +ismerai +isyss +itxel +iviana +ixora +iyland +izalea +izebella +izela +izora +izzi +jaasritha +jaaziel +jabrayah +jabrea +jabriya +jackielynn +jacky +jacquline +jadarose +jadea +jadon +jaelei +jaemarie +jahmila +jahmiya +jahmya +jahni +jaicey +jaidee +jailen +jakai +jakaya +jakaylee +jakelin +jakeria +jakylie +jalaiah +jalecia +jaleeah +jamaiya +jamarie +jamariyah +jameliah +jamiee +jamillah +jamille +jamina +jamirah +janais +janalise +janaria +janeliz +janeya +janhvi +janitza +jannie +janvika +jarielyz +jashlyn +jasmely +jasneet +jatavia +jaxlyn +jaylahni +jaylanis +jaylannie +jaylarose +jayleeana +jaylenn +jayliah +jaylianiz +jaylianni +jaylina +jaylise +jayloni +jaymeson +jayoni +jaysie +jayson +jayva +jayvianna +jaziel +jazilyn +jazlen +jazly +jazzalynn +jazzleen +jeanmarie +jeilany +jeily +jemina +jemiyah +jemmah +jenavive +jenin +jennalyse +jenneh +jennessa +jennessy +jennette +jeremy +jernei +jeselle +jesica +jesselyn +jesus +jette +jevaeh +jezabelle +jhaniya +jhara +jhelani +jhoana +jholie +jhournee +jhream +jian +jiaqi +jiaying +jiliana +jillianna +jimmie +jiovanna +jirah +jisele +jlani +jodeci +joee +joei +joeleen +joeleigh +joeli +joelly +joelyn +joelynn +jolianna +joline +jomana +jonier +joniya +joori +jora +jordanne +jorryn +josalee +jossalyn +jossie +joule +joules +jourie +journae +journeii +journni +jovelyn +jovianne +joyana +joyann +joycie +joye +joylyn +joylynn +jozey +jraya +judia +julani +jule +julee +julicia +julieana +julien +juliya +jurzi +jurzie +justyna +jyasia +kaarina +kabria +kadijah +kaelan +kahari +kahlaya +kahlil +kaiann +kaihlani +kailanee +kailynne +kaimarie +kaisha +kaithlyn +kaitlen +kaity +kalayla +kaleen +kaleiya +kaleiyah +kalirose +kaliyan +kalki +kallen +kalley +kaly +kalyce +kalyiah +kalyla +kamalei +kamellia +kamilya +kammi +kamore +kamrii +kanari +kandi +kani +karalyne +kareen +karelys +karielys +karigan +karlene +karlina +karlita +karmah +karslynn +karsten +karuna +karyssa +kasen +kashia +kashika +kasidee +kassaya +kassiah +kassius +kassy +kataleiya +kataryna +katerine +kathalia +kathlynn +katiemae +katileya +katilyn +katrice +katriona +katryna +kausar +kaveah +kavita +kaycen +kayde +kaydian +kaydince +kaydyn +kaylanee +kaylannie +kayleigha +kaylenn +kaylisa +kayliyah +kaylnn +kayoir +kayse +kaysee +kaysi +kayton +kayzleigh +kayzlynn +kazlyn +kazumi +keagyn +kealia +keandra +keeana +keelan +keelynn +keenan +keerthika +kefira +keilianys +keimya +keior +kelaia +kelanie +kelayah +keli +kemery +kemi +kemiah +kemira +kenasia +kendallynn +kenedie +keni +kenise +kennsley +kerah +keriana +kerington +kevianna +keyaira +keyanni +keyasia +keymani +keymoni +keymora +keyona +keyonni +keyshia +khadeeja +khadi +khaila +khaira +khairah +khaleesa +khaleesie +khalessy +khaleyah +khallie +khamiah +khamil +khani +khanyla +kharii +khawla +khayla +khaylee +khianna +khilee +khiley +khira +khodi +khyasia +khylani +khylar +khylin +kiaria +kiasia +kiava +kiely +kihlani +kimara +kimarie +kingslee +kinlie +kinsly +kinzee +kinzly +kirat +kirklyn +kisha +kiyani +kiyonna +kjerstin +kmiya +koah +koby +kodah +kolbee +konner +koriann +korii +korinna +kornelia +kortnee +korynne +kota +koto +kotone +krew +krisette +krisleigh +kristelle +kristyna +kumari +ky +kyahna +kyanah +kyarie +kyland +kyleia +kylenn +kylian +kylise +kyliyah +kylo +kymbella +kymbree +kymia +kynsie +kynzi +kyran +kyza +labelle +lace +lahni +laiani +laianna +lailaa +lailey +laionni +laiylah +lajla +lakshana +lakya +lal +lalita +lamyra +lan +lanaeh +laneya +lanova +larah +larai +laree +larin +laritza +larsyn +lashae +latasha +latia +latifah +latonya +latrinity +lauralyn +laurelin +laurissa +lavada +lavanya +lavera +lavynder +layaan +layahni +layia +laykyn +laylanni +laylannie +laylonnie +leahni +leahrose +leanah +leanette +leara +leelyn +leesha +lehani +lei +leiauna +leida +leighlah +leighlyn +leighonna +leika +leilamarie +leilynn +leisa +leisha +leiyani +lella +lenay +lenaya +lennen +lenzie +leonni +lessly +levee +leven +levin +leyan +leyanni +leyda +lezly +lianet +liannah +liannys +liddie +lienna +liezel +life +ligaya +light +ligia +lilan +lilas +liliahna +lilikoi +lilit +lillianah +lillianrose +lillienne +lilyian +lin +lirah +liria +lisabella +lisha +lismary +liva +livya +lizett +lizzette +lo +loanna +loganne +lolani +lolarose +lolly +loralee +loralynn +lorayne +lorelia +lorelie +loriah +loriel +lorilee +lorissa +lovette +lu +lucija +lucynda +ludovica +luisana +luisanny +lulah +lulie +lunamaria +luvina +luxley +luzelena +lyannie +lyberty +lyfe +lyle +lyliah +lyllah +lynex +lyniah +lynlie +lynsie +lynzie +lyricc +lyv +mabelyn +mackinzie +maclaine +maddelena +madelein +madelena +madelinn +madellyn +madhavi +madiana +madie +madlen +madrid +madysyn +maebree +maebri +maecy +maeda +magdalina +magdaline +magdelina +mahaley +mahani +mahdia +maheera +mahera +mahkayla +mahliyah +mahpiya +mahra +mahrukh +maiyana +maizlee +majorie +makalah +makalynn +makani +makaria +makayah +makaylynn +makeila +makelle +makenah +makenleigh +makhari +makylee +makynlei +makynleigh +malahn +malarie +malauni +malaylah +maleea +maleeya +malenie +malery +maleyiah +maleyna +maliea +malikah +malilah +malk +mallary +malori +malvina +malyna +mamediarra +manami +mandie +maneh +manisha +mankirat +manon +manroop +manvitha +marai +maralyn +marchesa +mardiya +marea +marelin +mareya +margareta +margaretann +mariahlynn +marialena +marianah +marianela +marieliz +mariell +marieme +marijke +marilin +marine +mariona +mariza +marjae +marjan +markella +markia +markyla +marleah +marleyah +marliana +marlize +marlys +marrianna +marron +marva +marybel +maryem +marylyn +marynn +maryori +maryruth +mastani +masuma +matelyn +mathea +matisse +mattel +matteo +maud +maurianna +mave +mayalee +mayanna +maybell +mayble +maybrie +mayer +mayim +maylasia +mayleah +maytte +mazarine +mazayah +mccartney +mckay +mckinney +mckinnon +mckynzi +meenah +meeyah +mehjabin +mehnaz +mehnoor +meiah +meilan +mel +melaher +melenia +melita +mellani +mellina +mellissa +melly +melodyann +memori +meria +merideth +merin +meris +merrit +meryam +metzi +mialuna +miamore +miavictoria +micha +michalina +michell +miciah +midna +mieke +miel +mija +mikasa +mikaylie +mikella +mikiah +mikinley +mikiya +mikya +mikyah +milagrace +milaina +milen +milenna +milina +milley +million +milyn +minori +miqueen +mirabell +mircale +mirelle +mirrah +misaki +missouri +miyona +mj +moe +mojolaoluwa +mollyann +monai +monay +mone +moniece +monserat +monseratt +moorea +morena +moyosoreoluwa +mumina +mumtas +muniba +munisa +musfirah +muskan +myalee +myarose +myella +myers +mylasia +mylea +myna +myrielle +mythri +nabella +nahliyah +naiima +naileth +nairoby +naja +nakaya +nakayah +nakhia +nakoa +nalahni +nalanni +naleiah +naliana +naliya +nallah +namira +nandana +nao +naphtali +nareh +narelle +naryiah +nashira +nasia +nasirah +nasma +nasreen +natalierose +natalija +natavia +natori +nattaly +navami +naveya +naviya +nayab +nayela +nayellie +nazyia +neenah +neesa +nehemie +neisha +nejla +nera +netanya +nevelyn +niala +nialah +niamya +niari +nicki +nicky +nicoleta +niemah +niharika +nihasvi +nikaela +nikolette +niloufar +nilynn +nimar +nimo +niniola +nisaa +nivi +niyat +niyeli +noalani +noam +noellie +noir +norajane +norhan +norianna +normandy +north +novae +novaeh +novajean +novaleah +novalise +novamae +novareign +novea +novelle +nyarah +nyaylah +nyeemah +nyel +nyelah +nyesha +nyibol +nyjae +nykeria +nykia +nylan +nylayah +nyomii +nyonna +ocie +octayvia +odina +ojasvi +oktavia +olimpia +olivet +oluwadara +oluwaferanmi +oluwafifehanmi +oluwatobi +oluwatomisin +olwen +omina +omolara +orlaith +osmara +ozella +paesley +paidyn +paighten +pailyn +paizlei +paizlie +pallas +panayiota +paralee +parmida +parvati +pashyn +pasleigh +paulett +paylee +payzleigh +pearlina +penda +penelopie +penney +pennylane +peru +peysley +pharaoh +pheona +pooja +preksha +prentiss +prezley +pricila +princesa +prisila +priyah +promisee +purpose +purvi +qirat +quest +quianna +quiara +quinnlynn +quynh +raaga +raedynn +raegann +raeni +rahama +rai +raidyn +raiin +raimey +raivyn +raiyn +raiyna +rakell +rakiya +ramani +ramira +ramisa +ramsay +ramyiah +rasiyah +raylenn +raylynne +rayme +razia +realyn +rebelle +rees +reesa +reighan +reise +reiss +reitzy +rejina +remia +remiyah +remley +rendi +retag +revy +rhae +rhapsody +rhealee +rhealyn +rhenn +rhetta +rhettlee +rhia +rhyanna +rhyian +rhyland +rhyli +ricci +rickayla +riddhima +ridwan +rielynn +riha +riho +riko +rileymae +rily +rinad +rithvi +rithvika +ritvi +riyanna +rockelle +rocklyn +roha +rokhaya +romeesa +ronia +roniya +rook +roqaya +rorey +rosaisela +rosanne +roselind +rosemari +roshni +rosibel +rosilyn +rous +rowann +rowdy +rowenna +royaltie +rua +rubye +rubyrae +ruhamah +rumina +ruqaiyah +ruqaya +rushda +ruzainah +ryenne +ryian +rylieann +ryon +saanchi +saanya +saatvika +sabre +sabree +sabriah +sabriya +sadeigh +sadye +sae +safoora +safwa +safwana +sahanna +saheli +sahirah +saiah +saidy +saila +sairy +saleha +salimata +samairah +samatha +sameena +sameya +samika +samoni +sandhya +sanii +sanmita +santiago +sarahann +sarahmae +sarinity +saryia +sashi +sathvika +saumya +saveena +saveyah +saviana +sayeda +scotty +sean +secily +seena +seher +selam +selenia +selihom +semaja +semaya +semma +senaya +seran +serenitey +sereyah +seveah +seville +shade +shadyn +shaeleigh +shahreen +shaianne +shaielle +shakyra +shalane +shalayah +shamirah +shammah +shamso +shanai +shanelly +shannara +shantall +shara +sharlize +shavonne +shawnee +shayenne +shaylen +shayma +sheriah +sherrie +sheva +sheylin +shikha +shiny +shiphrah +shiya +shoni +shoshanah +shreeda +shrena +shrija +shrivika +shuyao +shy +shyaire +shyenne +sianney +siarra +sibel +siddhiksha +sierrah +sigourney +silka +siman +simcha +simonne +simrin +sinia +siomara +sionna +sirin +sivani +skaii +skilah +skyanna +skylarr +skyleen +skylor +smriti +snithika +sochikaima +sofhia +sofiagrace +sofiarose +sofiyah +sohvi +sokona +solangel +solena +solymar +somi +soni +soniya +sophiana +sophira +sophonie +soraia +soumya +spiritual +spoorthi +sreenika +stacia +starlett +stefaniya +stellar +sthefany +stina +stokely +stormee +sudeeksha +suellen +sukhleen +sulema +suleyma +sumnima +sun +sunniva +surabhi +surbhi +surie +susu +swan +syanna +syiah +syleena +sylver +symphanie +taalia +taaliah +tabassum +tabita +tahara +tahera +tahj +tahliah +tahreem +taima +tairy +taiyari +tajae +tajah +talaiya +talayiah +talley +tallula +tamarah +tamilore +tamina +tanae +tani +tapanga +tarahji +tasmia +tauren +tauri +tay +tayanna +taylea +tayma +taytem +tayven +teala +teari +tearra +teilynn +teleah +teliyah +terah +terese +teri +teriana +terrae +terrah +terrie +tesa +tesia +tesneem +tessalyn +tessla +testimony +thai +thaleia +thali +thaliah +thang +theda +theya +thi +thianna +thisbe +thy +tian +tiauna +tierany +tiernan +tifa +timea +timora +tinzlee +tiona +tionne +titania +titilayo +tomiris +tony +toren +toria +toriann +torii +torilynn +traeh +trejure +treva +trillium +trini +troy +truleigh +trulie +tu +tuleen +tyann +tylin +tyona +tyrah +tyson +tytiana +tzivi +uinise +ulla +valaya +vanely +vaniyah +vannessa +vanshika +varshini +vasti +vayle +vayolet +veah +vedhika +velina +venicia +veronia +vibiana +victoriah +victorina +videlle +viena +vindhya +violetrose +vivan +vivienna +vivyanna +vrinda +vyana +vyanna +waelyn +waleska +waverleigh +weam +wenona +westley +whitten +willamena +willie +willoughby +willowmae +wilmary +wilson +winni +wryn +wyla +xamora +xaniya +xaylah +xaylee +xerenity +xi +xiadani +ximara +ximora +xion +xiyue +yadelyn +yahli +yahvi +yaileen +yailen +yalexi +yali +yalissa +yamili +yamiyah +yanais +yanexi +yanice +yanielys +yanina +yanis +yannah +yanxi +yarden +yarelin +yarelli +yaremi +yareth +yarethzy +yaretsi +yariana +yarianna +yarielys +yarleth +yasamin +yasina +yasmeena +yasmely +yassmin +yayra +yazmarie +yazmeen +yazmina +yazmyn +yazmyne +yehudit +yeilani +yeisy +yekaterina +yelani +yeslin +yexalen +yian +yianna +yining +ylenia +yojana +yolandi +york +yorleny +yousef +youssra +ysa +ysabela +yukari +yukiko +yulenny +yulie +yuliya +yunuen +yura +yuzuha +zade +zady +zaeda +zahli +zaiden +zakhari +zakhia +zakirah +zakyria +zaleiah +zamani +zamarie +zamayah +zamirha +zamoni +zamyiah +zanayah +zander +zarayiah +zariel +zarionna +zarnish +zarriyah +zavanah +zayde +zayleah +zayliah +zayliana +zayn +zee +zehava +zehira +zehlani +zeidy +zendeya +zennia +zephora +zevaeh +zeyah +zhaniya +zhanna +zhariah +zhariyah +zhen +zhia +zhoemy +ziaire +ziann +ziarah +ziasia +ziel +zinat +zinia +ziyi +zlaty +zoanna +zodi +zoeey +zoel +zoela +zoellie +zophie +zoria +zsofia +zubaida +zuli +zumar +zuriana +zurina +zyanah +zyanne +zylaa +zyleigh +zymirah +zynah +zyniyah +zynlee +zyona +liam +noah +william +james +oliver +benjamin +elijah +lucas +mason +logan +alexander +ethan +jacob +michael +daniel +henry +jackson +sebastian +aiden +matthew +samuel +david +joseph +carter +owen +wyatt +john +jack +luke +jayden +dylan +grayson +levi +isaac +gabriel +julian +mateo +anthony +jaxon +lincoln +joshua +christopher +andrew +theodore +caleb +ryan +asher +nathan +thomas +leo +isaiah +charles +josiah +hudson +christian +hunter +connor +eli +ezra +aaron +landon +adrian +jonathan +nolan +jeremiah +easton +elias +colton +cameron +carson +robert +angel +maverick +nicholas +dominic +jaxson +greyson +adam +ian +austin +santiago +jordan +cooper +brayden +roman +evan +ezekiel +xavier +jose +jace +jameson +leonardo +bryson +axel +everett +parker +kayden +miles +sawyer +jason +declan +weston +micah +ayden +wesley +luca +vincent +damian +zachary +silas +gavin +chase +kai +emmett +harrison +nathaniel +kingston +cole +tyler +bennett +bentley +ryker +tristan +brandon +kevin +luis +george +ashton +rowan +braxton +ryder +gael +ivan +diego +maxwell +max +carlos +kaiden +juan +maddox +justin +waylon +calvin +giovanni +jonah +abel +jayce +jesus +amir +king +beau +camden +alex +jasper +malachi +brody +jude +blake +emmanuel +eric +brooks +elliot +antonio +abraham +timothy +finn +rhett +elliott +edward +august +xander +alan +dean +lorenzo +bryce +karter +victor +milo +miguel +hayden +graham +grant +zion +tucker +jesse +zayden +joel +richard +patrick +emiliano +avery +nicolas +brantley +dawson +myles +matteo +river +steven +thiago +zane +matias +judah +messiah +jeremy +preston +oscar +kaleb +alejandro +marcus +mark +peter +maximus +barrett +jax +andres +holden +legend +charlie +knox +kaden +paxton +kyrie +kyle +griffin +josue +kenneth +beckett +enzo +adriel +arthur +felix +bryan +lukas +paul +brian +colt +caden +leon +archer +omar +israel +aidan +theo +javier +remington +jaden +bradley +emilio +colin +riley +cayden +phoenix +clayton +simon +ace +nash +derek +rafael +zander +brady +jorge +jake +louis +damien +karson +walker +maximiliano +amari +sean +chance +walter +martin +finley +andre +tobias +cash +corbin +arlo +iker +erick +emerson +gunner +cody +stephen +francisco +killian +dallas +reid +manuel +lane +atlas +rylan +jensen +ronan +beckham +daxton +anderson +kameron +raymond +orion +cristian +tanner +kyler +jett +cohen +ricardo +spencer +gideon +ali +fernando +jaiden +titus +travis +bodhi +eduardo +dante +ellis +prince +kane +luka +kash +hendrix +desmond +donovan +mario +atticus +cruz +garrett +hector +angelo +jeffrey +edwin +cesar +zayn +devin +conor +warren +odin +jayceon +romeo +julius +jaylen +hayes +kayson +muhammad +jaxton +joaquin +caiden +dakota +major +keegan +sergio +marshall +johnny +kade +edgar +leonel +ismael +marco +tyson +wade +collin +troy +nasir +conner +adonis +jared +rory +andy +jase +lennox +shane +malik +ari +reed +seth +clark +erik +lawson +trevor +gage +nico +malakai +quinn +cade +johnathan +sullivan +solomon +cyrus +fabian +pedro +frank +shawn +malcolm +khalil +nehemiah +dalton +mathias +jay +ibrahim +peyton +winston +kason +zayne +noel +princeton +matthias +gregory +sterling +dominick +elian +grady +russell +finnegan +ruben +gianni +porter +kendrick +leland +pablo +allen +hugo +raiden +kolton +remy +ezequiel +damon +emanuel +zaiden +otto +bowen +marcos +abram +kasen +franklin +royce +jonas +sage +philip +esteban +drake +kashton +roberto +harvey +alexis +kian +jamison +maximilian +adan +milan +phillip +albert +dax +mohamed +ronin +kamden +hank +memphis +oakley +augustus +drew +moises +armani +rhys +benson +jayson +kyson +braylen +corey +gunnar +omari +alonzo +landen +armando +derrick +dexter +enrique +bruce +nikolai +francis +rocco +kairo +royal +zachariah +arjun +deacon +skyler +eden +alijah +rowen +pierce +uriel +ronald +luciano +tate +frederick +kieran +lawrence +moses +rodrigo +brycen +leonidas +nixon +keith +chandler +case +davis +asa +darius +isaias +aden +jaime +landyn +raul +niko +trenton +apollo +cairo +izaiah +scott +dorian +julio +wilder +santino +dustin +donald +raphael +saul +taylor +ayaan +duke +ryland +tatum +ahmed +moshe +edison +emmitt +cannon +alec +danny +keaton +roy +conrad +roland +quentin +lewis +samson +brock +kylan +cason +ahmad +jalen +nikolas +braylon +kamari +dennis +callum +justice +soren +rayan +aarav +gerardo +ares +brendan +jamari +kaison +yusuf +issac +jasiah +callen +forrest +makai +crew +kobe +bo +julien +mathew +braden +johan +marvin +zaid +stetson +casey +ty +ariel +tony +zain +callan +cullen +sincere +uriah +dillon +kannon +colby +axton +cassius +quinton +mekhi +reece +alessandro +jerry +mauricio +sam +trey +mohammad +alberto +gustavo +arturo +fletcher +marcelo +abdiel +hamza +alfredo +chris +finnley +curtis +kellan +quincy +kase +harry +kyree +wilson +cayson +hezekiah +kohen +neil +mohammed +raylan +kaysen +lucca +sylas +mack +leonard +lionel +ford +roger +rex +alden +boston +colson +briggs +zeke +dariel +kingsley +valentino +jamir +salvador +vihaan +mitchell +lance +lucian +darren +jimmy +alvin +amos +tripp +zaire +layton +reese +casen +colten +brennan +korbin +sonny +bruno +orlando +devon +huxley +boone +maurice +nelson +douglas +randy +gary +lennon +titan +denver +jaziel +noe +jefferson +ricky +lochlan +rayden +bryant +langston +lachlan +clay +abdullah +lee +baylor +leandro +ben +kareem +layne +joe +crosby +deandre +demetrius +kellen +carl +jakob +ridge +bronson +jedidiah +rohan +larry +stanley +tomas +shiloh +thaddeus +watson +baker +vicente +koda +jagger +nathanael +carmelo +shepherd +graysen +melvin +ernesto +jamie +yosef +clyde +eddie +tristen +grey +ray +tommy +samir +ramon +santana +kristian +marcel +wells +zyaire +brecken +byron +otis +reyansh +axl +joey +trace +morgan +musa +harlan +enoch +henrik +kristopher +talon +rey +guillermo +houston +jon +vincenzo +dane +terry +azariah +castiel +kye +augustine +zechariah +joziah +kamryn +hassan +jamal +chaim +bodie +emery +branson +jaxtyn +kole +wayne +aryan +alonso +brixton +madden +allan +flynn +jaxen +harley +magnus +sutton +dash +anders +westley +brett +emory +felipe +yousef +jadiel +mordechai +dominik +junior +eliseo +fisher +harold +jaxxon +kamdyn +maximo +caspian +kelvin +damari +fox +trent +hugh +briar +franco +keanu +terrance +yahir +ameer +kaiser +thatcher +ishaan +koa +merrick +coen +rodney +brayan +london +rudy +gordon +bobby +aron +marc +van +anakin +canaan +dario +reginald +westin +darian +ledger +leighton +maxton +tadeo +valentin +aldo +khalid +nickolas +toby +dayton +jacoby +billy +gatlin +elisha +jabari +jermaine +alvaro +marlon +mayson +blaze +jeffery +kace +braydon +achilles +brysen +saint +xzavier +aydin +eugene +adrien +cain +kylo +nova +onyx +arian +bjorn +jerome +miller +alfred +kenzo +kyng +leroy +maison +jordy +stefan +wallace +benicio +kendall +zayd +blaine +tristian +anson +gannon +jeremias +marley +ronnie +dangelo +kody +will +bentlee +gerald +salvatore +turner +chad +misael +mustafa +konnor +maxim +rogelio +zakai +cory +judson +brentley +darwin +louie +ulises +dakari +rocky +wesson +alfonso +payton +dwayne +juelz +duncan +keagan +deshawn +bode +bridger +skylar +brodie +landry +avi +keenan +reuben +jaxx +rene +yehuda +imran +yael +alexzander +willie +cristiano +heath +lyric +davion +elon +karsyn +krew +jairo +maddux +ephraim +ignacio +vivaan +aries +vance +boden +lyle +ralph +reign +camilo +draven +terrence +idris +ira +javion +jericho +khari +marcellus +creed +shepard +terrell +ahmir +camdyn +cedric +howard +jad +zahir +harper +justus +forest +gibson +zev +alaric +decker +ernest +jesiah +torin +benedict +bowie +deangelo +genesis +harlem +kalel +kylen +bishop +immanuel +lian +zavier +archie +davian +gus +kabir +korbyn +randall +benton +coleman +markus +kenny +santos +zackary +alistair +bear +blaise +kolten +leif +mac +marquis +karsen +simeon +abner +calum +robin +shaun +yadiel +yahya +micheal +reagan +dimitri +giancarlo +harris +konner +aksel +eithan +emir +greysen +jair +lamar +callahan +zyon +danilo +ramiro +amare +bilal +mccoy +brantlee +channing +cillian +deklan +emmet +isai +javon +jonathon +jovanni +rashad +ezrah +frankie +pierre +antoine +eliezer +hakeem +linkin +shmuel +wes +agustin +dominique +kooper +brayson +evander +darrell +vaughn +adler +shlomo +dhruv +eason +gianluca +giovani +nazir +ayan +kolt +foster +kiaan +semaj +bellamy +jakari +kolby +legacy +lev +menachem +niklaus +osiris +rodolfo +eliot +remi +aarush +anton +denzel +karim +laith +shimon +joan +meir +slade +viktor +yaakov +zamir +boaz +camron +ean +rolando +rome +yisroel +kaine +seamus +stone +deon +jessie +cashton +krish +ross +jamarion +tyrone +arrow +clarence +jayvion +makhi +palmer +aaden +cayde +eliam +everest +kylian +mike +taj +tru +freddy +raheem +yair +ansel +dilan +eliel +rio +ulysses +brenden +edmund +gino +khai +westyn +aayan +avraham +ayven +neymar +cartier +gilbert +kyren +malaki +ocean +pierson +bernard +jaycob +mylo +rylen +sidney +aspen +bastian +efrain +isiah +kymani +nikko +steve +yaseen +zakari +kalvin +murphy +tyrell +yitzchok +brent +bronx +demarcus +mikael +pharaoh +truman +viaan +derick +kaeden +lucien +malakhi +noble +finnian +jones +kanan +quintin +sami +aleksander +atreus +craig +german +koen +zack +campbell +clinton +ismail +link +eamon +aubrey +camryn +jethro +montgomery +todd +banks +jovani +kent +salem +veer +barry +brenton +carlo +elvis +jakai +quinten +caysen +jenson +kyzer +tyree +kruz +milton +vince +zavian +gian +lazarus +mikel +norman +cal +mariano +tzvi +azrael +gerard +glenn +macklin +ollie +atreyu +braiden +colter +cortez +jai +jakobe +jaydon +jean +matheo +nikola +rian +ryatt +zephaniah +akeem +camren +garrison +gray +jordyn +linus +tariq +youssef +damion +jet +kamron +teagan +carsen +elmer +finnick +gilberto +granger +hasan +hollis +kacen +kilian +vladimir +benny +darien +eleazar +izayah +jamar +abdulrahman +carver +cian +clifford +cristopher +jahmir +kain +kaisen +rayyan +zeus +ander +aydan +cedar +jakobi +johnathon +karl +aditya +aidyn +amar +daylen +riggs +bernardo +davon +kenji +neo +osvaldo +stephan +yoel +brice +cormac +huck +knowledge +levon +thorin +tiago +adiel +armaan +atharv +brendon +ishmael +marcello +oren +riaan +aamir +andreas +davin +demari +guy +jessiah +syed +braylin +chevy +darryl +gadiel +kaidyn +niam +cassian +denim +edric +phineas +reynaldo +tevin +yasir +gonzalo +jaylon +kenan +rowdy +ruger +umar +warner +aven +jadon +kyro +perry +steele +tahj +alton +benaiah +jacobi +oskar +rico +smith +avion +caius +roderick +braxtyn +coy +gentry +jael +jaylin +jhett +tayden +teo +ash +aston +dion +elio +emil +haiden +lathan +leeland +maddix +octavio +arham +cristobal +darnell +irvin +kenton +kyrin +lucius +ramsey +roan +aaryan +bailey +casper +dale +johann +kennedy +mattias +avyaan +carmine +jaidyn +maksim +urijah +witten +wolfgang +drayden +jordi +keon +klayton +salman +zakariya +zaylen +aurelio +axle +braeden +devonte +fredrick +gionni +irving +isa +josias +nick +nigel +sheldon +sire +tristin +wylder +amarion +anas +arden +beaux +broderick +damarion +kael +lyam +seven +syncere +baron +coleson +corbyn +gauge +johnpaul +ryden +wiley +yuvaan +abdul +addison +barron +clint +dovid +elvin +francesco +hans +presley +rogan +zaidyn +damir +dashiell +daxon +loki +mauro +myron +ramses +siddharth +tylan +ansh +aziel +brighton +destin +ever +henri +yuvan +zeppelin +azael +canyon +deegan +dev +donte +elyas +humberto +jakoby +kamren +lloyd +sammy +trevon +triston +ambrose +ayansh +boyd +chace +dereck +eddy +monroe +osman +shea +armon +beck +elan +massiah +canon +dezmond +geovanni +kyron +leopold +mikhail +amias +cecil +don +kaius +kallen +luther +rishi +yakov +aedan +aryeh +branden +coby +edrick +hadi +jacari +josh +lenox +maxx +mikah +olin +zakaria +carsyn +dov +gerson +kiyan +lyndon +marquise +massimo +ozzy +rylee +truett +wren +yasin +zephyr +alek +faris +hagen +kyan +maximillian +zen +adolfo +ayman +azriel +ilan +jiovanni +kayne +khamari +masen +rudra +zavion +ender +giovanny +jiraiya +kaycen +korben +rishaan +ajay +antwan +bryer +ilyas +jarrett +jasiel +journey +khyree +laken +maxon +morris +sebastien +sultan +braven +eliyahu +hiram +isaak +jarvis +jaxsen +keller +khaza +sir +arman +deion +keelan +khaled +kodi +kysen +linden +merritt +noam +saif +zayan +brigham +jaxyn +thor +arnold +asahd +auden +elam +kentrell +ronaldo +shaurya +trystan +xaiden +yeshua +britton +clifton +ewan +fitzgerald +kelly +leyton +malikai +maverik +neal +valor +vernon +wylie +avian +brogan +everette +ishan +marek +rockwell +shamar +yousif +adnan +charley +devante +ervin +fynn +hussain +johnnie +jovan +malek +oakland +alessio +azaiah +haven +ivaan +jaceon +kainen +kyran +nehemias +braxten +calder +daryl +ellison +kadyn +kaleo +pranav +rami +teddy +zaden +constantine +fred +giuseppe +jahlil +jionni +kiran +mathis +montana +samarth +aayden +ammar +dan +keyon +abbas +diesel +earl +honor +nestor +niall +obadiah +true +abdirahman +aizen +alexandro +ayub +brandt +emmit +filip +jayven +kanon +lonnie +masiah +stephon +wilmer +alister +amauri +brexton +bryar +dwight +jayse +kenai +lenny +lester +perseus +raleigh +yasiel +branch +cornelius +gavyn +hoyt +jamil +judd +mavrick +rivers +slater +chester +jeriah +mahmoud +omer +sol +tiberius +tyce +ved +viraj +xavi +advik +cru +javen +karam +koby +kyden +kylar +lucio +renzo +savion +taylen +arvin +denis +jaeden +jaleel +jaquan +khristian +konrad +kurt +micaiah +nate +braulio +devyn +eiden +freddie +hussein +jacen +jamel +jrue +klay +ridley +tamir +vito +zyan +advaith +aris +azai +cadence +jules +kamarion +kelton +kit +lars +ozias +paulo +shay +shivansh +sky +avyan +corban +cordell +cristofer +eder +edson +ezio +fischer +issa +jackie +jahir +jorden +kainoa +kanaan +mahir +neel +orin +ren +sloan +yariel +zayvion +abdullahi +aharon +benito +caelum +demetri +devan +devansh +hyrum +javian +jaydan +lazaro +lux +marcelino +monte +reyan +yazan +avrohom +dashawn +deshaun +gryffin +jennings +kaizer +kassius +markel +marlin +rhodes +riyan +tobin +waylen +zabdiel +angus +antony +finnigan +floyd +hampton +jelani +josef +markell +saleh +austyn +booker +chaz +efren +eitan +gracen +izan +jariel +jeremih +kamran +lamont +lemuel +lenin +syrus +tegan +yousuf +zackery +asaiah +bayron +davi +duane +huxton +jan +kasyn +keylor +lex +maddex +marko +nolen +oaklee +roscoe +storm +stryker +west +yuri +zymir +aariz +abe +ashtyn +clive +darell +eren +eros +eyad +holt +izaac +kyngston +manolo +mickey +raylen +rick +tyshawn +woodrow +austen +eliott +hamilton +jayvon +kadence +kage +kipton +korey +naftali +nikita +townes +truth +wolf +akiva +arie +avett +donnie +emrys +glen +ignatius +isael +jacques +kashmir +mattis +nikhil +om +oziel +ransom +rush +sabastian +scout +yohan +ziggy +anay +aren +asad +courtney +dandre +donavan +hashim +iverson +jovanny +kaizen +kingsten +kion +mars +morrison +paris +rhyder +shaya +stellan +sunny +theron +aj +blayne +bradyn +cam +chosen +darion +demario +dillan +edmond +grayden +lexington +marshawn +muhammed +samar +sevyn +thompson +triton +adonai +amin +arnav +axell +dave +ely +gio +kartier +khyrie +kip +marion +marquez +matheus +nevin +ozzie +ranger +selim +shai +simcha +yunus +camari +crue +demarion +deonte +hendrick +jaxston +kolson +mahdi +nile +riot +sulaiman +unknown +benji +cael +cassidy +elton +giorgio +iman +kaedyn +kaeson +kasey +kreed +kyaire +loren +orrin +shaan +taha +treyson +virgil +wendell +westen +zachery +zaine +zamari +chancellor +damoni +domenic +domingo +henley +indiana +jaxsyn +jaylan +kainan +keoni +kris +maxson +mayer +obed +octavius +pax +ronen +sahil +said +ulices +valen +yisrael +abdallah +aslan +brant +copeland +dakoda +eastyn +herbert +jairus +kylin +loyal +ragnar +riker +romello +saad +sameer +xavian +ahaan +amere +croix +daxtyn +daylan +dior +estevan +geoffrey +hendrik +heriberto +jacobo +juanpablo +reilly +shalom +travon +amadeus +andrei +archibald +basil +caesar +crawford +cree +fenix +fidel +ike +jaziah +kirk +rigoberto +shia +shiv +summit +terence +tyrus +tytus +adin +alder +amen +bently +darrius +deklyn +dontae +fredy +jordon +oden +radley +stuart +tidus +tristyn +alexandre +ames +caison +conway +dewayne +elyjah +indigo +isidro +iver +kurtis +olivier +osiel +rashawn +revan +rihaan +shannon +zacari +zyair +aahil +aeson +amani +andrey +bradford +bryden +emric +gareth +ivar +jahari +jeff +jullian +kalen +karmelo +lake +levy +mamadou +marius +masyn +meyer +nyle +prynce +rexton +sai +shayan +sylvester +tenzin +tom +xayden +yuvraj +zade +brennen +cai +cy +daquan +deven +hawk +heston +jahseh +marlo +mohamad +nahum +neev +noa +patricio +quadir +shlok +tavion +xavion +yandel +zach +zacharias +zyion +zyler +aayush +adriano +alexavier +aram +arley +aviel +brooklyn +eben +egypt +hawkins +hernan +jaheim +kamal +kellin +krishna +luc +othniel +rickey +taim +yehoshua +bakari +breck +carlton +demitri +draco +gene +graeme +haris +jaron +jeronimo +krishiv +leander +makari +mordecai +orson +paolo +percy +sagan +theodor +tylen +yusef +aadvik +aayansh +athan +baxter +bennet +flint +jaiceon +kahlil +ken +kobi +maceo +nicolai +noriel +ori +oshea +parth +pryce +raziel +reggie +rye +willem +akram +alain +amaziah +arin +armin +atom +aziz +darrin +deontae +eesa +fritz +giannis +hazen +herman +job +karsten +kenyon +kevon +laurence +patton +rafe +rehan +remmy +saleem +shayne +uziel +vander +abhiram +agastya +aveer +azlan +chayce +chayton +ciaran +cylas +cyril +dallin +davonte +gavriel +hosea +jahaziel +jaysen +kaisyn +kayleb +robbie +safwan +subhan +takoda +yonatan +ahron +ammon +bransen +brentlee +caine +carsten +coltyn +damani +donnell +emile +federico +huntley +jabril +jakub +jasir +leviathan +leviticus +natan +pete +renly +tre +uzziah +xion +abdulaziz +ahmari +amado +arion +augustin +ayaansh +calen +cove +cypress +demarco +demir +guadalupe +hansel +jawad +jerimiah +naim +omarion +sylus +syre +tyrese +tyrion +antwon +charbel +charleston +collins +dhruva +dixon +galen +haroon +jetson +joao +jru +kavin +keshawn +knight +larkin +llewyn +lukah +merlin +nivaan +rakan +rebel +rhyatt +syaire +tim +wynn +baruch +caelan +daemon +daylon +eldon +eoin +esai +everardo +everhett +evin +gabe +genaro +giovonni +gregorio +hanson +ilias +indy +jareth +jaycen +jed +juancarlos +kal +lavon +lisandro +locke +mehki +miguelangel +mykel +payson +rayaan +riggins +slate +tyron +viraaj +zac +zyir +abhinav +abiel +aiyden +antoni +arhaan +arlen +armoni +asiah +bane +braelyn +dejuan +dempsey +farhan +holland +jamarcus +joseluis +kasper +kaydence +keshav +luqman +martez +mykah +novah +price +raymundo +reyes +rodrick +rustin +shaquille +tracy +willis +aaiden +abbott +blair +bodi +brad +burke +calix +conan +deniz +finlay +itzae +kaladin +kashtyn +kavion +leveon +lyon +naeem +nassir +nirvaan +qasim +ryu +ryver +saeed +salim +taiden +tremaine +walden +zaki +abelardo +azaan +blaize +bradlee +cedrick +chauncey +conley +deanthony +dru +ethyn +fahad +harlen +hershy +jadyn +jaycion +johnson +josiyah +kemari +marcell +nakoa +oswaldo +rainer +roel +salomon +tymir +yash +abubakar +alston +artem +aurelius +boris +braedyn +bram +eloy +fabio +geovanny +haddon +jakhi +jameer +jamier +javi +jeshua +jimmie +keion +kendric +kolbe +kollin +makaio +maliki +manny +mazen +mckinley +oaklyn +reef +reyaan +ron +royalty +sven +tyriq +yerik +aasir +aleksandr +ameen +amon +bauer +brayton +calan +claude +claudio +decklan +domenico +dutch +eliab +esdras +ethen +fateh +izaak +jalil +jayvian +jody +jonael +jovany +kam +kerry +kirby +koltyn +landin +mace +marwan +mazi +murad +santhiago +shulem +talan +taron +trayvon +wisdom +aceson +alpha +aric +ashwin +ayush +blayze +brison +cainen +chayse +chet +darsh +deen +eidan +erwin +haziel +jade +jaxin +jeziel +kendrix +kingstyn +kylon +mahlon +naveen +quade +quest +rahim +rider +roen +rumi +sampson +suleiman +tahir +timur +trae +usman +willard +williams +zaedyn +aasim +arius +arya +ashad +ayce +brently +emeric +eshaan +everson +gaige +geno +hiro +jayveon +jedediah +joah +johannes +keandre +kekoa +kory +kota +ladarius +latrell +majesty +mateus +mavrik +mendel +mylan +osmar +parks +richie +rowyn +shakur +stockton +surya +ted +thane +theophilus +wali +yechiel +adem +ayson +champion +graydon +hamzah +kadin +krue +makhai +marshal +montrell +niles +penn +ravi +rayland +tuff +waylan +aarin +allister +amarii +ebenezer +emerick +ilya +izrael +jahmari +jahsiah +jakhari +jamere +jansen +javari +kallan +khaleb +kharter +laine +lyncoln +malcom +nayel +raider +raymon +rylin +saige +saxon +stiles +tai +tejas +tommie +viggo +von +wayland +weslee +yassin +younis +zahid +aahan +adhvik +aleister +asim +axyl +aylan +bill +binyomin +cruze +daksh +darrion +elden +faisal +fitz +hero +jahleel +jupiter +kailer +kale +kanyon +karon +kato +mckay +mikail +muad +nahmir +nazareth +perrin +raylon +rayshawn +romelo +ryley +teegan +truitt +vedant +welles +zaydan +abdias +abubakr +akhil +alastair +bryton +collier +creighton +dakarai +dawsyn +eivin +garret +haniel +harlow +harun +jashawn +jerrell +jeyden +jibreel +jiren +kamil +kidus +kofi +kyon +lino +mael +mikhael +moussa +musab +neythan +octavian +raghav +raidyn +rashid +ridhaan +rigo +roosevelt +skye +stefano +tarek +treyvon +valentine +varun +zamarion +alias +amay +aramis +arav +avin +beauden +beckam +binyamin +bohdi +bruin +brylan +coltin +deondre +eugenio +eyden +jaceion +javonte +jaxten +jaymeson +kaito +kaydin +kegan +kiyaan +larson +layden +lucky +lyan +murray +nahom +naksh +nino +rayce +shreyan +stratton +tennyson +trevin +tye +whitaker +whitley +zavien +zekiel +zuriel +aariv +abdel +acen +akai +akira +andersen +atharva +audie +azari +bryston +cassiel +clement +daylin +demian +desean +efraim +eliazar +esaias +eshan +haider +jaceyon +jacorey +jaydin +jeter +juliano +knoxx +laron +lipa +lowell +malachai +maleek +michelangelo +natanael +nathen +neithan +quinlan +renato +romel +sirius +taran +teague +torren +tyshaun +vikram +yitzchak +ziad +adel +ajani +aman +armand +banner +caidyn +cale +carlisle +daelyn +darrien +devlin +devontae +enoc +fabrizio +geovany +haden +isreal +jahziel +jamaal +jarren +jarrod +kaydon +khalif +kiernan +klaus +konstantin +liev +maclin +matt +mikko +miko +nael +rayne +robinson +roshan +santiel +shivaay +shourya +talen +tavian +thayer +tytan +vedansh +vedanth +walt +wilber +xavien +yasser +zacchaeus +ziyon +advait +arik +avan +bless +caeden +carmello +chasen +clarke +colston +coulson +daren +daveon +daxten +dayson +dino +dmari +dmitri +fares +haze +jahan +jakson +jaycee +jediah +jeramiah +kalani +kavi +khylen +khyler +landan +layth +linkoln +lior +lucious +lyrik +mosiah +noor +oswald +pau +ramir +renner +riyansh +sahir +sanad +steel +timber +vinny +walton +wrigley +yovani +zian +aadi +adil +akari +amanuel +ariyan +ashar +ashur +asir +axtyn +aziah +baylen +braylan +breon +corben +cortland +cosmo +courtland +declyn +demarius +derian +dyson +ioannis +japheth +jaren +jasai +kairos +keilan +kwame +linken +luan +mahki +marciano +mathieu +nyjah +olen +pavel +pietro +rain +rashaad +raven +riyaan +saylor +tayson +tysen +viyan +ward +wynston +zidane +alekzander +angad +anuel +beauregard +blade +blane +brennon +brylen +dekari +demar +edan +eliah +elwood +evans +ezekial +fionn +gamaliel +gaspar +harbor +harland +hilario +javan +jayvien +jim +judge +kaan +kalan +kawhi +kelan +kelby +keyden +khayden +kree +kyair +lawton +maher +manning +maveric +muhsin +nabil +olliver +oz +romero +sandro +tavon +tory +tyren +willy +yaqub +zayvian +zedekiah +alexandros +anirudh +artist +ashten +ayoub +bennie +berkley +braxley +brewer +carlito +deshon +dresden +earnest +eian +emari +favian +graceson +horacio +hudsyn +iain +ibraheem +izak +janiel +jermiah +jidenna +kayde +kelson +kemper +kolter +lakota +lynden +makoa +maximilliano +mecca +mercer +naseem +negan +nikolaos +oaklen +oumar +pearson +quill +rhyan +roczen +salah +savior +seeley +sora +supreme +sylis +tamim +tylin +virat +whitman +xzavion +zak +zakary +zaylin +zidan +ahad +alim +arjan +arlan +boy +chadwick +coda +conall +cornell +cristhian +dashel +daven +dequan +divine +emran +erin +esau +fermin +hadley +ivory +jaedyn +jaelyn +jahdiel +jaice +jaire +jaxtin +jaylyn +jerald +jhonny +jin +jonatan +kaimana +karthik +kayvon +keyan +kodiak +kolin +kroy +lander +leevi +leslie +loyalty +maddon +marques +mervin +miloh +namir +newton +oryn +pace +pryor +quin +rakeem +randolph +rasheed +rayansh +regan +riggin +sahib +selvin +shreyas +tabias +treyton +vidal +waleed +wilfredo +younes +zael +zeno +ziaire +abimael +abir +akash +amaru +amor +asaad +benyamin +boe +bowman +cali +christiano +copelan +cutler +dakotah +demond +dyland +edgardo +eduard +evren +ezana +faizan +graeson +halen +henryk +hershel +idrees +jakeem +jaquez +jarell +javeon +javin +jettson +justyn +karas +khylan +kolsen +konstantinos +madison +matan +melo +mick +mouhamed +muhammadali +neftali +nirvan +nosson +nyles +rhythm +riddick +rohaan +rune +sailor +shayaan +shemar +sherman +sholom +srihan +sudais +sydney +taylon +tayvion +terran +torrin +treshawn +tyus +yadier +yahel +yanis +zein +abdoulaye +able +abrar +adhrit +affan +alen +alexei +alphonse +amaan +anwar +artemis +bartholomew +bradly +braedon +breyden +brix +buck +cincere +coleton +elie +emry +essa +freeman +gaven +hardy +holdyn +jasen +jhase +juel +kaesyn +kashmere +kendell +khaleel +koah +kyrell +lamarcus +lamarion +leobardo +mackenzie +marlow +nathanial +ojas +osias +pearce +rahmir +renley +royale +sander +saud +sufyan +thang +toryn +usher +vivan +weldon +winter +yurem +ziyad +aero +aiven +aleczander +ashley +auston +bret +cache +dameon +darin +daron +dayron +deagan +delvin +denny +denton +dhyan +dillion +eligh +eydan +fabricio +finlee +frederic +garry +hadrian +hendrixx +hillel +holton +jameir +jeancarlos +jeremyah +jibril +jireh +jj +joniel +jordin +jory +josiel +kaidan +koi +kordell +kristofer +kyland +kymir +kyser +laszlo +leiland +lucciano +maaz +macon +mahad +maynor +minh +mycah +neyland +odell +odyn +omega +ram +reno +rhydian +rhylan +rigel +rudolph +ryken +sabir +santi +shlome +sorin +taylin +theoden +uriyah +vishnu +wheeler +whitten +yan +yanuel +adalberto +alakai +anish +art +asael +auron +ayham +bogdan +cainan +calloway +captain +champ +clemente +colden +cylus +deante +dedrick +deklin +drayton +egan +elimelech +ellington +emin +erickson +esa +franklyn +franky +fulton +garrick +gibran +gohan +graycen +hawthorne +jafet +jamin +javien +jaymes +jayon +jess +jevon +jomar +josyah +kadir +kaidence +kamar +kirill +ky +laiken +luigi +maddax +masai +mikey +mithran +prescott +quran +ryen +sasha +scotty +shamir +tillman +virlan +waseem +wayde +wellington +wolfe +yannick +zacarias +zair +zayed +zorawar +abisai +adonay +aking +akshar +amaree +aquiles +arsh +arush +bowden +brave +caio +camdon +carlin +castle +cato +cross +damen +domonic +dontrell +dreyson +dylon +ekam +espen +geronimo +gustav +hogan +homer +izael +jahsir +jaykob +jaythan +joab +jovian +kacper +kanen +karmello +kasai +kaven +kayceon +keven +khristopher +kimani +lashawn +lebron +lou +mansa +mehmet +mert +nicco +nolyn +oak +orian +rainier +ranveer +rohen +sanjay +scottie +shayden +sylar +talha +tarik +teodoro +tiger +timmy +trevion +tyquan +woods +zaeden +aadit +aarish +abdurrahman +abhay +adon +adyn +aeden +akil +alfie +alon +amadou +anand +ananias +arron +asiel +atlee +avenir +baltazar +becker +braydan +brekken +bryon +casimir +cavan +chip +corwin +dana +darrian +davontae +deaglan +easten +ethaniel +ezariah +giacomo +hagan +hakim +henderson +hudsen +hutton +isak +ishaq +jaciel +jaxiel +jossiah +kacey +kali +karlos +keane +kerem +keyshawn +khalifa +kingdavid +lejend +loic +marty +mikai +mikal +monty +nicodemus +oryan +oseias +param +reza +rihan +rosendo +rylie +samual +shaw +sidharth +sutter +terrion +torryn +tyr +tyrie +vinson +whit +winslow +yunis +zahmir +zakariah +adi +ajax +aleksandar +an +anvay +arshan +asier +azir +brannon +brenner +can +cheskel +crimson +damarcus +danial +darby +decklyn +delano +deron +dexton +dietrich +donavon +dream +dusty +duvid +edvin +elric +emrick +enrico +ferris +finneas +gabino +giuliano +golden +haidyn +han +hartley +haydn +heber +hubert +ilijah +jabriel +javaris +jensyn +joesiah +johnluke +jorah +kalin +kaydan +kaylen +kaylon +kodah +kruze +lael +leam +leopoldo +marquel +maysen +mika +mills +mubarak +nicholai +nihal +nylan +odysseus +qais +randal +rashard +rayvon +reuven +rj +rook +rudransh +sinan +sione +stewart +stryder +styles +sylvan +taven +tavin +taylan +thunder +tj +tobiah +tydus +uri +wilkes +xavior +yahia +yaziel +yonah +zaydin +zaydon +zyire +adham +adyan +ameir +ashtin +avik +aycen +ayrton +azazel +boruch +bransyn +breccan +broden +charly +christ +cloud +corvin +darrel +dawud +derik +dex +dimas +donato +edin +elder +eliyah +etienne +exavier +ezrael +fallon +geovani +hal +hasani +huey +humza +iram +jacion +jaeger +jaison +jamauri +jameel +januel +jaquae +jarred +jayshawn +jenesis +jerrick +jeziah +jhonatan +jonny +karston +kavish +kipp +koleson +krystian +lakai +lazar +leeroy +levin +luisangel +madhav +maeson +marlowe +md +nery +ollivander +oziah +prestyn +princeston +ramone +rayhan +rhyker +rich +ritchie +ronny +roxas +ruslan +russel +sammuel +shelby +shmiel +shrey +sohan +stanton +stevie +taytum +tayven +tayvon +teodor +torrence +treston +valente +vann +vyom +wilhelm +xzander +yossi +zamar +zayyan +zeyad +adryan +ahsan +ahyan +akim +akshay +amaury +anik +aristotle +barret +bearett +benzion +blu +blue +braydin +christofer +creedence +daelan +dashaun +dayne +demitrius +demonte +deonta +eliud +emmerson +enos +errol +evaan +gil +grover +hansen +hashem +hatcher +ibrahima +izaan +jahkai +jarrell +jassiel +jayceion +jayton +jedi +jencarlos +jerrod +jersey +josemanuel +jovon +kento +khyson +korban +lamari +lamonte +lazer +leeam +lennix +lion +loukas +loxley +lucah +mackson +mazin +mihir +miracle +miron +montez +munir +nadir +najee +nicola +nilan +oisin +opie +oswin +pinchas +poseidon +reyaansh +reymundo +rolland +ryne +sebastion +sekou +shivam +shloma +soham +symir +tallon +thoren +tiernan +torian +tyran +uzair +vihan +weylin +wilfred +yamil +yonathan +yug +yugan +zuri +zymere +aceyn +agam +ahnaf +aldair +amjad +anibal +antione +antonino +aran +aras +arien +avrum +axiel +bensen +blessing +bodee +brandyn +cayman +christos +colsen +corin +daire +damarius +dayveon +deckard +demoni +devonta +donavin +eliaz +eyan +fausto +galileo +georgio +godric +gotham +greer +griffen +heitor +jacky +jacquees +jalani +jamon +jancarlos +jathan +josemaria +jotham +jr +kairi +kamrin +kashten +kasin +kavon +kaynen +keigan +kemuel +kendal +kepler +kol +kullen +kyzen +loghan +macen +marik +matix +maxime +michel +nakai +nasser +neiko +nicolo +noland +olan +parsa +phinehas +raj +rashaun +redding +redmond +reeve +rei +rion +ripken +roque +rueben +rusty +saifan +shreyansh +sriyan +tavares +trever +urban +wilbur +willow +woodson +yago +yeiden +zackariah +zayvier +zenith +abriel +advith +al +alphonso +amier +amire +avyukt +ayyub +beaumont +bodey +brazos +caisen +casyn +cayleb +chanse +cutter +dakhari +daxson +deluca +demani +deric +devaughn +dewey +donny +donta +dontay +dre +eastin +ebrahim +eh +emon +emre +enmanuel +fenton +gaines +gianlucas +greg +halo +hart +hayze +hisham +ihsan +irie +isac +isidore +izeyah +jacquez +jae +jakayden +jamey +jamieson +janson +jihad +joaquim +johnmichael +jun +kais +kalem +kallum +kamauri +kannan +kari +kendon +kenner +landis +lavell +lochlann +lonzo +lowen +lucifer +markos +maveryck +maxen +mendy +myers +nabeel +nadav +navy +nazar +nazier +neko +nomar +pascal +pharoah +phoenyx +pinchus +praise +reeves +richmond +rufus +ruhaan +talal +tanush +tennessee +willian +xane +yulian +aadhav +abdurahman +alp +alyas +amaris +andrea +arjen +arsen +artemio +ashvik +aviraj +azan +bashir +brandan +braxtin +braycen +cadyn +cage +carlyle +cleo +dajon +dajuan +damonte +daniyal +dany +darey +davien +daxx +diamond +dimitrios +dionte +draxton +eamonn +ediel +ehan +eliyas +elya +esiah +eston +ferdinand +griffey +hanley +henrick +hilton +imari +jakori +jamarius +janoah +jarett +jashaun +jasiyah +jessy +juwan +kacyn +kadeem +kaidon +kailen +kameryn +kani +kayan +kayce +kei +keniel +keshaun +khyri +kingstin +knoah +kori +kyllian +kyre +lavelle +lavonte +leandre +leelan +leven +macallan +macario +macsen +mattix +mehtab +mesiah +miqueas +misha +mitchel +mizael +moksh +mostafa +muaz +napoleon +nas +nayan +nickolai +nils +nivin +nuri +pascual +paxten +paxtyn +prosper +rithvik +rocket +rolan +ryett +samy +shelton +sheppard +siddhant +sully +syair +tilden +timoteo +torsten +trapper +tremayne +trenten +trevyn +tuck +tycen +tylor +tyreek +webb +wilbert +wylee +yechezkel +yeison +zaevion +zaydrian +zohan +zubair +aadyn +aaric +advit +amaar +amadeo +anav +andrez +anjel +arish +arlin +armen +ashraf +aydon +azeem +bassam +bohdan +brax +braysen +brier +britain +caliber +calin +caspar +castor +chapman +cj +dael +damar +daniil +darryn +delton +derrell +didier +dorien +drayce +drayson +elia +emersyn +eythan +eziah +ezriel +fintan +flavio +gavino +graylen +greysin +griffyn +haakon +habib +harlin +hendricks +henrique +hercules +herschel +heru +hutch +hutson +idan +jacori +jaidon +jailen +jak +jarek +jayren +jayvin +jeanluc +jeriel +jian +jiovani +joachim +johndavid +joseangel +jowell +julen +kahari +kaston +kayvion +keeton +keiran +kemarion +kemoni +keylan +khi +kiptyn +kizer +lamarr +leovanni +linkon +linkyn +lynx +lysander +malique +marlee +marshaun +martel +matthieu +mivaan +moishe +naftuli +norris +oaklan +oberon +oluwatobi +rafi +rahman +rickie +ridwan +rivaan +rommel +rony +rorik +sabian +samael +sarim +saxton +seneca +shivaan +shloimy +shon +shriyan +sriram +sulayman +syler +tage +talib +tayton +teigan +thaddaeus +theseus +torrey +travion +tyberius +valerian +vedh +weylyn +yahshua +yareth +yeshaya +yi +zakir +zarek +zaxton +zayaan +zayde +zhaire +aaren +aaryav +abdulmalik +abrahm +alasdair +alastor +alucard +andi +arlow +arnoldo +arnulfo +arye +ascher +athen +augusto +ausar +avir +avner +axten +ayaz +azlaan +bastien +bastion +bexton +braddock +breckin +brodi +brylon +buddy +camarion +cashmere +cleveland +creek +curren +dalvin +dani +danthony +davey +dekker +deklen +delmar +derrion +devion +dierks +domani +domonick +eddison +elgin +ember +ernie +faustino +garen +hamid +hirving +homero +hyde +ikaika +imani +irfan +jaasiel +jacolby +jakaiden +jassiah +jaysean +jerson +jhon +jiyan +joelle +joriel +juandiego +jusiah +kashius +khang +kristoff +kyion +lamir +legion +leone +liangelo +lliam +maksym +marquell +martell +mattox +matvey +miklo +miliano +mourad +mousa +nana +nevan +nihit +octavious +ousmane +owyn +quintus +ramesses +raylin +remmington +remus +robby +romell +sajid +shaul +silvestre +stefon +suhayb +suraj +torben +trayson +vian +yuvin +zakhi +zayveon +zeb +aakash +abdimalik +adael +adair +adian +adrik +advay +alexey +alexi +almir +amer +amr +aneesh +arjunreddy +artis +avyukth +ayomide +brando +braylyn +bright +broc +bryceson +burton +canton +carey +cary +cashel +cashius +chesky +christen +cyrie +damier +darron +dasan +daymon +dejon +dhruvan +dylann +eeshan +elnathan +farid +findley +florian +gennady +godwin +griffith +hari +haroun +huntlee +huxlee +iziah +jabez +jalon +jalyn +jatniel +jaxsin +jaymar +jayquan +jeffry +jerick +jerron +jianni +joud +june +kaelum +kailan +kamdon +kanoa +karder +karver +kean +khairi +khoi +kowen +krishav +krithik +kymari +larenzo +leith +leonid +levii +lio +lleyton +lyfe +madix +manasseh +mase +maveryk +merle +michaelangelo +mikaeel +natnael +navi +navid +nero +nicoli +norberto +olson +oluwatobiloba +omri +oslo +otniel +rahil +rakim +raydon +ripley +rishan +rooney +saatvik +sadiq +sakari +savon +servando +sid +taym +toren +tracen +trinidad +tylon +tyrin +vansh +viyaan +walid +wynter +yeriel +yishai +zadok +zakhari +zarion +zebulon +ziare +zyhir +aaryn +ahan +alexandru +arlis +armond +arsenio +arslan +atley +avinash +bayne +bohannon +brantly +braxon +bray +breckyn +breyson +bricen +brodee +carnell +chael +chozen +christon +cliff +cord +daris +darrick +daryn +dayan +deng +deontay +derez +domenick +echo +edrian +einar +elroy +emet +exodus +fredrik +geo +gershon +hashir +hayk +hazael +henrry +hutchinson +itzael +jaeceon +jailyn +jarius +javontae +jeremie +jesaiah +juanito +kailo +kairee +kalum +karlo +karsin +karthikeya +kaspian +kaylor +kaz +keiden +kenson +keontae +kessler +khali +khaliq +khyren +kiansh +kross +logen +majd +master +masud +mavryk +maximillion +maximino +mikkel +myking +naod +narek +nevaan +nikoli +nnamdi +nyzir +ole +olyver +ostin +paden +paxon +payden +raekwon +raquan +rashaud +raynor +reinaldo +riyad +rocko +rodger +roran +ryon +samad +shadrach +sheamus +shraga +sion +stephano +teigen +tevita +tex +thielen +timofey +uzziel +vir +vlad +wyland +xayne +xerxes +yazeed +yonis +yuriel +zacharia +zaelyn +zaidan +zalmen +zayvien +zephan +aaditya +aaro +abishai +aboubacar +akshaj +alanzo +amilcar +amilio +amyr +antwone +artur +arun +asante +asaph +ashby +assad +attikus +aydenn +aydrian +azul +bentzion +bleu +braeson +bristol +brysin +burhanuddin +calogero +cameren +cannan +carrick +cass +ceasar +chancelor +cheikh +ciro +clancy +crixus +cylis +dacari +dara +davidson +dawood +doc +donatello +dreyden +dyllan +eagan +eber +edwyn +efe +ellias +erasmo +erez +eryk +esequiel +euan +fahd +falcon +garland +garner +gautham +geremiah +gryphon +gurbaaz +havoc +henson +horace +huckleberry +huzaifa +iden +iniyan +irwin +ismaeel +jacory +jafar +jahi +jahiem +jahmere +jaivon +jakyrie +jamichael +jaxn +jazz +jhalil +jobe +joell +jordany +jovi +jozef +kadrian +kahmari +kailor +kaio +kaleth +kamir +karma +kaynan +kaysin +kelley +kennith +keston +khaden +khairo +kirubel +kortez +kutter +kyri +kyriee +lestat +lofton +mahkai +markeith +martavious +marvens +mateen +maui +montel +mordche +mykell +nadeem +nason +nesanel +nicklaus +nyaire +paxson +pheonix +philippe +philopater +prem +prentice +priest +prophet +quamir +raegan +rael +raja +rishabh +robel +rogue +rohit +rowland +salih +sartaj +shade +shiva +siah +silvio +srihaan +suhaib +taft +tallen +tayveon +thayne +townsend +trigg +ubaldo +vaughan +wael +warrick +wassim +xian +yadriel +yared +zealand +zuhair +zyheir +aadam +aadil +abdulloh +adithya +adley +adonias +albie +altair +alvis +amelio +andrae +andree +arno +ashyr +audric +aviv +avram +bawi +bayler +belal +birch +bladen +boubacar +bow +brailyn +braxson +brixon +brixten +broly +bryler +buckley +caedmon +callaway +caron +carston +caston +caulder +cayne +chaise +charlee +chason +cipriano +cotton +daegan +daevion +dain +dallen +dalyn +darvin +dashiel +davinci +daymian +dayvon +demetrio +denali +diangelo +diyan +edahi +edinson +ehsan +eisa +elija +elijiah +erion +escher +finnlee +fishel +future +gaius +gerrit +giles +greyden +gunther +guthrie +haydon +hersh +ikenna +iven +iyan +izaya +jacek +jaidan +jaimeson +jarod +jasson +javonni +jaxstyn +jaymison +jayron +johny +josian +jullien +jyaire +kaesen +kaige +kailand +kassian +kc +kendry +kenley +kennan +keondre +khaiden +kingdom +kingjames +kingslee +kirin +koy +kru +ladd +laquan +lavern +lavi +londyn +lorenz +lucus +lycan +macoy +magic +marquan +matai +maven +maxemiliano +maynard +mekhai +mica +mister +mose +moxon +mychael +myka +mynor +nachman +naseer +nazario +newt +niccolo +nikolaus +obie +oday +percival +pharrell +piero +quaid +quenton +raine +ramel +ramy +revel +rexford +rishik +romen +rosario +rubin +saadiq +sathvik +sevin +shakir +shivay +shloime +shneur +shubh +stoney +strider +taavi +taevion +talmage +tameem +taysom +tej +teller +teon +thelonious +tobi +tramaine +tyjuan +tyreke +tyshon +uthman +wesly +whittaker +yamir +yanni +yassine +zaeem +zaven +zay +zaydyn +zaylan +zaylon +zyier +zylan +aalijah +abrahim +adlai +adonnis +afnan +ahmaad +ahren +alarik +aleck +aly +amil +amit +amory +anvith +arath +arda +arlington +asai +astin +ata +averett +aws +azel +azim +azure +baer +beckem +behr +benuel +blayden +bostyn +boyce +braidyn +callaghan +cane +carmen +caspen +chief +chukwuemeka +conlan +coulter +cyler +cyncere +dailen +dastan +delbert +denym +derion +devine +diago +dimitry +dirk +dj +draylen +dustyn +elihu +emad +emani +emmerich +emrik +finian +giani +gianmarco +glendon +graison +hamdan +hays +helios +holten +ilian +indie +ireoluwa +izmael +jaiven +jakhai +jamaree +jamesyn +jamire +jamisen +jarel +jaxxen +jaydyn +jayme +jceon +jeb +jehu +jeison +jens +jiyaan +joesph +jourdan +jream +juanjose +juno +juvenal +kaedon +kaide +kaiel +kainalu +kairav +kalil +kalix +kalon +kannen +karan +kasim +kastiel +kaya +kelechi +kenyan +keonte +keyler +khalel +kiing +kinnick +kiyon +klein +klyde +kobie +kolden +kristoffer +kush +kycen +latham +liban +lord +lovell +luian +luken +lynnox +madox +malakye +marcial +marvel +meer +meilech +melchizedek +micha +million +nam +naman +nasiah +nassim +noctis +oaken +obinna +ogden +olsen +omid +omir +parrish +pasquale +phenix +quincey +rajveer +rand +rayson +refael +rehaan +rishab +roark +rockford +roi +rowin +rui +ryler +saahir +sachin +safari +saharsh +sahas +samari +sanav +sayan +sayed +sharif +shiven +shray +siraj +slayton +soul +stavros +stirling +swayde +taelyn +tafari +tahmid +takai +tamarion +tanay +tavaris +toma +tommaso +torrian +tyrek +urias +vittorio +wake +witt +xaviar +yacoub +yafet +yamen +yoandri +yohannes +yona +youssouf +yusif +yuven +zalman +zed +zekiah +zlatan +abdulhadi +achilleus +adir +adrain +aidon +aldin +aldon +aleem +aloysius +amun +anias +antuan +anubis +aous +aria +auguste +avari +averi +avry +azad +barack +baylin +baylon +benjamyn +benjiman +berkeley +berl +bob +branton +braun +brion +brodrick +burhan +celso +chipper +coltan +colvin +constantino +corbett +cris +daer +dalen +danell +dashon +davonta +dawit +dawsen +daxtin +deakon +decklin +demauri +demetrios +dheeran +dinero +diondre +divit +donell +dylen +edrik +elim +eliya +eoghan +everitt +frederik +friedrich +ganon +gates +given +greycen +greysyn +hridhaan +iann +ilay +imron +ithan +izen +jaece +jaevion +jager +jaheem +jaion +jamario +jasean +jasim +jayko +jaylynn +jazper +jeevan +jentry +jorel +josaiah +josemiguel +jostin +journee +joyner +judas +kaileb +kashdon +kayzen +kazi +kejuan +kendale +kevyn +kieren +kinan +koehn +kolston +koltin +kove +kyrian +kyus +lando +laramie +larsen +lauro +layten +leonides +liem +lorcan +louden +maasai +macarthur +madoc +mahari +makel +maks +manoah +mckenzie +mega +mekai +miking +milad +mir +missael +mitch +mj +motty +mujtaba +mustapha +mychal +nation +navarro +navin +naythan +nilo +nishan +nivan +nolin +novak +nuh +oaklin +oluwadarasimi +platon +porfirio +prayan +quillan +qusay +raed +rayner +rayshaun +reda +renaldo +rhone +roarke +rollin +ronav +ruston +rustyn +sahaj +saw +serge +shae +shem +stacy +stanford +suleyman +syon +tabor +tad +tajh +tauren +tavish +tayler +tayten +terell +thien +tian +tino +treyden +treysen +trip +tyden +tyrique +yaniel +yidel +yovanni +yves +zadyn +zaheer +zyere +aadhi +aanav +aarnav +abdulahi +abdulkarim +abenezer +abrahan +abu +adeeb +adien +adonijah +adric +adrion +ahmet +aidin +aidric +akoni +alarick +aldrin +alfonzo +alik +alyan +amador +amiir +amiri +amonte +amour +anchor +andrick +andru +anselmo +archimedes +armanii +asani +ashden +ashe +asser +avyn +baby +bernabe +betzalel +bexley +blas +bosco +boss +brenten +broxton +bryn +calian +candido +caydence +christan +ciel +cobi +codi +cordarius +cort +crispin +cristo +damauri +damond +danyel +daunte +davyn +deaaron +decari +dondre +donivan +drue +edris +eisen +elis +elson +eman +ericson +estuardo +evangelos +eyoel +fadi +fergus +ferran +fin +fitzpatrick +francois +gaetano +gennaro +giancarlos +gurfateh +gurman +haadi +hammad +hanad +hannibal +hawken +hazel +hesston +hiroshi +ibrohim +itai +ivo +izaiyah +izreal +jadarius +jahziah +jaiveon +jaivion +jalin +jamarie +jamerson +jaret +jaydee +jaydeen +jaydn +jeancarlo +jeanpaul +jedaiah +jedd +jedrek +jep +jessejames +jomari +jona +jood +josey +joshuah +juaquin +justis +kadarius +kaelan +kaeo +kaid +kaj +kalev +kanai +kaseem +kashawn +kashden +kashus +kaylan +kayven +kelsey +kemani +kendrell +kendrik +kennon +kensington +kenyatta +keyaan +keyton +khadim +kharson +kimoni +kitt +kmari +kodie +kohl +kushal +kyndall +kyrese +laiden +laksh +langdon +larenz +laurent +lazlo +lenyx +leul +luiz +lynn +macai +mads +majid +maksymilian +malakhai +marshon +massimiliano +matin +mccrae +mechel +mehdi +merrik +michal +moosa +mubashir +munasar +naftoli +naheem +nahuel +naveed +nazaire +nikos +nirav +nori +nyxon +oluwademilade +orlin +othman +panagiotis +philemon +philipp +promise +ra +rayquan +reyden +rhyland +riku +rock +rylon +ryot +ryzen +samiir +santo +sayer +sebastiano +sedrick +shad +shilo +siddhartha +silus +sirus +stafford +sumner +tadhg +taiga +texas +tito +torrance +trayce +trayden +treyvion +trinity +trysten +tryston +tyreese +umair +vadim +vasilios +wally +webster +woody +xaiver +yaman +yassen +yazid +yianni +yoseph +yuto +zaahir +zebadiah +zebulun +zeth +ziah +zubayr +aarian +aashir +abdulahad +abhimanyu +adarius +ademide +adharv +ahmere +aiken +aithan +akio +aladdin +aleksei +alexsander +amara +amarian +amarius +amiel +amine +amoni +anden +antone +antwain +arcangel +arlie +arlyn +arsalan +asar +astro +athanasios +athanasius +athens +aureliano +ayvin +ayvion +azekiel +babyboy +bernardino +blessed +bodin +braelen +brees +brick +brydon +burech +caellum +calixto +cameryn +camrin +canan +carlitos +caylum +celestino +cezar +chaynce +chidubem +cohan +cordero +danniel +darcy +darshan +dartagnan +daviel +deakin +delaney +devaansh +dillinger +dmitriy +dmitry +dodge +drako +eathan +edmundo +edy +eero +eissa +elazar +eliakim +emilian +emilliano +emitt +epic +erdem +erlin +ermias +eron +ezekiah +fareed +fawkes +feliciano +gabrial +garth +gatlyn +gatsby +georgios +haidar +hamish +harmon +haruki +haytham +helio +helix +hendryx +heron +hewitt +himmat +iam +iktan +isabella +isayah +itay +izac +izekiel +izzy +jacque +jaedon +jaeshawn +jakarri +jamall +jamarr +jamell +jaquavious +javoni +jayan +jaydenn +jaymin +jayshaun +jaysiah +jehlani +jerell +jeremi +jerico +jheremy +jovonni +kaceton +kaelin +kaikoa +kalib +kamdin +kameran +kamilo +kashtin +kawika +kaycee +kaysan +keagen +kemon +kendarius +kendriel +kenston +keone +keziah +khalon +khan +khoa +kien +kimball +kitai +kolsyn +kord +kova +kyros +lafayette +lavar +layken +lelan +lennex +liahm +lizandro +machai +mahmud +maijor +maisen +majour +makiah +makoto +maliek +maliq +mannix +manraj +manu +manvik +margarito +maxtyn +menno +michai +mohamedamin +muntasir +naaman +naasir +nashton +naszir +nysir +oaks +oberyn +omere +oran +ozan +patryk +priyansh +prynceton +rainn +raiyan +rajah +rawlins +rees +reis +reymond +rigby +roe +romir +roper +rourke +rushank +rykker +ryson +sahmir +saim +salar +samer +sanford +sayvion +schneur +schuyler +selah +sophia +sota +stefen +stokely +symon +syris +taggart +tarun +taurus +tavis +teagen +teal +theodoro +tigran +tobenna +trigger +tycho +ulisses +vayden +victory +viransh +vrishank +waris +waylin +windsor +winner +wright +wylan +xzayvier +yannis +yazen +yehudah +yichen +yosiah +zadrian +zameer +zayon +zeeshan +zhyon +ziyan +zohaan +zvi +aarik +abdifatah +abeer +adams +adrean +aeron +airam +akhari +aki +akito +alegend +alyjah +amaro +amiliano +andrej +andry +anuar +apollos +arash +arber +arif +asaf +asaya +augie +aum +avien +avishai +avyay +aydyn +aymen +aysen +ayyan +azion +bain +benedetto +benjamen +braedan +braelin +braxston +braxxton +brazen +brendyn +bretton +brockton +brook +caedyn +cannen +carden +carrington +cashtyn +cavani +charlton +clovis +cobe +coley +cortney +cosimo +courage +cuyler +cyan +dade +daeshawn +daevon +daivik +dak +dallis +damarco +damario +danil +darek +dariell +darious +daryan +davit +dayon +delonte +deston +dez +diezel +dionicio +draxler +draycen +drelyn +drexel +edsel +ejay +elai +ellijah +elohim +elwin +emersen +ezel +favio +firas +florentino +gaddiel +gale +garett +garren +gaspard +gautam +gemini +georges +giovany +grason +griff +halston +haru +harvin +hasaan +hensley +holston +honest +imaad +imad +ivann +izik +jaaziel +jacinto +jacksyn +jacobe +jaeson +jakobie +jamiel +jasher +jashon +javaughn +jc +jd +jeyson +jorian +jubal +kaeleb +kaiyan +kalmen +kanishk +kassidy +kaulder +kaydenn +kaydyn +kayler +kayn +kemal +kemar +kenrick +kevion +kevonte +keyontae +khaleed +khaos +khiry +khyrin +kimber +kishan +koji +kona +konor +kuzey +kwabena +kylor +kyshawn +lamere +lemar +leonidus +lindon +lucan +lukasz +maahir +macari +maejor +magdiel +mahamadou +mahamed +makani +makbel +malone +marcellous +marin +marino +markon +marsean +marvell +marz +mathayus +maury +mavric +maximilien +mehran +merek +midas +mikell +mina +mohid +moon +mouhamadou +muadh +muhamed +myer +naji +najib +naphtali +nasier +nasim +nawaf +neziah +nickson +nikolaj +nilson +norrin +nox +nyair +nyzier +olvin +omkar +osmin +owais +payne +peace +pike +qadir +qusai +rafan +rafiq +ramello +ramzi +rawley +rayder +rayn +reegan +remiel +renn +reynolds +rhonin +righteous +rivan +rondell +ronel +ronell +rucker +ryann +rydge +ryo +saber +sanchez +sandy +santonio +sarthak +satvik +severin +severus +shahan +shivaansh +shrihaan +shyam +shyne +silver +sirr +sohum +solace +soloman +stevenson +suhaan +sun +taliesin +taren +terron +thad +theon +thierry +tilian +torey +trajan +travell +traxton +tres +treshaun +tyion +ulrich +vallen +vasily +vega +westly +whyatt +wiliam +wrenley +wyeth +xaden +xylon +yamin +yiannis +yogi +yohann +yoshua +yostin +zackaria +zakk +zebediah +zeek +zeplin +zhane +zia +zoe +zoltan +zylon +aadhvik +aarion +aarit +aason +abdoul +abdulraheem +abdur +abran +aison +alban +albin +albion +aleksey +ami +amori +anant +andersson +andreus +andrik +anthem +antonios +antonius +argenis +ario +arjay +arkan +arran +arrington +artin +aryon +asahel +attila +audrick +auggie +aveon +averie +avigdor +axcel +ayad +azahel +aztlan +bannon +banyan +baraka +barton +becket +bhargav +bora +braison +brandin +brayon +brenin +brodey +brylin +bud +calyx +capone +cavin +cephas +che +christoph +cisco +cobain +connar +cordae +cosme +coty +coyote +cruzito +dagoberto +daijon +dajour +dameir +damontae +danner +daud +daulton +davante +degan +dekota +denzell +derin +derron +derwin +destyn +deuce +devarsh +dimitrius +diyor +dolan +donovin +dontavious +dontez +draper +drayven +dshawn +ehitan +eilan +elbert +elchonon +elier +elwyn +elyan +emmaus +ennis +ephram +erich +erikson +eris +evelyn +evyn +ezeriah +ezreal +faolan +faraz +fenris +filiberto +findlay +finnly +foxx +fredric +gable +gabrian +gabriele +garvey +ghaith +giulio +goku +graisyn +gregg +gustave +hades +hamad +hamed +harrington +haruto +hayzen +hesham +horatio +horus +hunner +huntington +hurley +husain +huy +hyatt +hyland +ibaad +ikechukwu +imanol +iran +iroh +jahel +jahking +jaise +jaiveer +jalal +jamarri +jamian +jarron +jaxxson +jaxxton +jazier +jebediah +jeriko +jerrett +jhace +jhamir +jimi +joeseph +jonte +josniel +jossue +jshawn +junaid +juniper +kadon +kaicen +kairon +kamani +kamel +kanye +kasir +kasten +kavan +kayo +keaghan +keelyn +keithen +kelijah +kerim +khy +khye +kincaid +kingson +kinsler +kj +knolan +konstantine +koston +kymoni +kypton +ladon +lateef +law +layson +leib +lemmy +lenard +lennin +lenoxx +leron +lewin +leyland +lukus +majestic +makar +malin +manas +manases +markanthony +marquese +martinez +maurizio +maxamillion +meba +mehkai +menelik +mercy +meshilem +mikolaj +milam +miro +mohan +mohsen +mukhtar +murtaza +naif +naser +ness +nessiah +nicky +niklas +nikolay +nithin +niyam +nobel +nyko +nymir +ociel +olajuwon +olaoluwa +oneil +osbaldo +osiah +pacey +padraig +parley +parris +pasha +peniel +phil +philo +pio +pratham +prodigy +quan +quintyn +raffi +rahiem +rahul +ramadan +ramelo +ramiel +rashod +rashon +reddington +renji +rhen +rishav +riven +rowe +ruhan +rupert +russ +ryaan +sabin +sajan +samay +sammie +samwise +sarp +saviour +sayid +seger +shahmeer +shaquan +shareef +sheikh +sherwin +shun +souleymane +sparsh +stark +symere +taegan +takota +takumi +talyn +tao +tarak +tashaun +taurean +taysen +tayshawn +tegh +teron +terrel +thanos +thorsten +tien +toni +tray +trentyn +trinton +trystin +tylar +uziah +vash +vegas +vincente +vinh +viraat +vishwa +vivek +vonn +waylyn +waylynn +whitt +wyett +xaine +xhaiden +xyon +yoan +yoni +york +young +yuma +zaccheus +zakariye +zayven +ziv +zohaib +zyden +zymier +zyree +abdalla +abdiaziz +abdulbasit +abigail +acari +adama +adeel +adhrith +adib +aedyn +aeon +afton +ajai +akbar +akilan +alejo +alikai +allante +amarie +amarri +amel +amell +anael +anastacio +anastasios +andriel +andriy +anhad +anis +anmol +anthoni +anvit +ara +arad +arbor +arhan +ariz +arjuna +arkin +ashaad +ashford +ashwath +askari +asriel +avier +ayomikun +azarias +azarion +azhar +baine +bakary +balthazar +barak +batu +benjamim +biruk +bladimir +bolton +bralyn +brandy +braxden +braydyn +breeze +bren +brodhi +brookston +bryker +burak +cace +cahlil +calhoun +camillo +cashus +caydin +chantz +chaston +constantin +copper +cori +cornelio +credence +cuauhtemoc +cyprian +daesyn +dagan +daiden +dailyn +dakai +dakarri +damiano +danyal +davier +daxter +daymien +deaire +dedric +deleon +delon +demarkus +demarri +demetris +deniro +derrek +derrik +derrius +desi +deveon +devesh +devontay +dezmin +dijon +dionisio +dmarion +dmir +dmoni +domonique +dontavius +dorrian +doyle +dreux +dyllon +edel +edouard +eduar +eizen +elion +elyon +emarion +emerik +emett +emillio +emit +eriksen +esben +eytan +faiz +farrell +fawaz +florencio +franz +fuad +geordan +gianny +gracin +graesyn +graysyn +guhan +habeeb +hakan +hale +harlon +harlyn +harshiv +hasnain +hawke +haydin +haynes +haywood +heaven +henok +hussam +ifeoluwa +ilia +illias +imraan +inaki +isacc +issak +izek +izel +izyan +jabali +jabarri +jacobie +jadan +jag +jahbari +jahlani +jahmier +jakaden +jakye +jaloni +jamonte +jandriel +jarret +jashua +javar +jawan +jaykon +jepson +jeremiyah +jerrik +jestin +jex +jezreel +jhoan +jhoel +jhonathan +joash +johnwilliam +joni +julez +justyce +kagan +kaihan +kaii +kaimani +kainon +kaipo +kaire +kaiyon +kalai +kamau +kamsiyochukwu +kano +kaveer +kawai +kazimir +kealii +kedrick +keelin +keithan +kemp +kenay +kendyn +kennard +kenniel +kervens +kervin +keylon +khalee +khary +khazi +khori +khyair +khylin +khyre +kiari +kiefer +kimi +kipling +kiro +knoxton +kohlson +korie +kosta +koven +kwasi +kwesi +kymere +kyo +ladarrius +laikyn +lambert +legynd +leniel +leor +lijah +logic +macklen +maclain +maguire +maikel +malak +malichi +markese +marquice +martino +martrell +matisse +mattheo +maximos +maxxon +mckoy +meric +merik +meshach +mia +mikeal +miran +mirza +moayad +mohsin +moziah +mylin +nader +nayden +ned +neeko +neilan +nikesh +nikodem +nixxon +nour +oakes +obaloluwa +obi +olly +orren +oseas +osinachi +ovadia +papa +park +pearse +peregrine +petar +race +raeden +raffaele +rahm +ralston +rameses +ramiz +randell +rapheal +rashed +raydan +raydin +raysean +regis +reuel +rhyett +rizwan +romario +ronak +rone +ronnell +ruthvik +ryle +saathvik +sabino +sacha +sahan +saheed +samrat +sanders +sava +seif +sekani +senan +sevan +shahid +shan +shazil +sho +shravan +shyheim +sigurd +simone +siris +siyuan +skylan +slayter +solon +sonnie +sriyaan +stan +stanislav +stevan +stiven +suleman +syire +tacari +taimur +takari +taksh +tam +taquan +taryn +tashawn +tatem +tawhid +taydon +thai +theodoros +timothee +tonatiuh +trexton +trust +tyaire +tyre +tyrel +tyrik +ulugbek +vaibhav +vayu +vibhav +vinnie +wacey +washington +wissam +xadrian +xyler +xzavior +yacob +yaiden +yandiel +yanky +yasmani +yassir +yates +yaxiel +yeray +yomar +zaccai +zadkiel +zahari +zaim +zaivion +zakkary +zale +zamier +zaydenn +zorian +zorion +zymeir +zymire +zyonn +abhiraj +aceon +adaiah +adith +aesir +ahkeem +ailan +ajeet +akili +albeiro +aldous +alekai +alesso +alwyn +alyaan +amarey +amirjon +amogh +andoni +andrian +andric +anduin +angello +antwaun +ariston +arkyn +aro +arth +ashon +asiyah +avel +avis +avraj +awab +azaryah +balor +barok +baxton +benigno +berish +berlin +bert +blain +blayke +boomer +bowyn +bracken +brahm +bravery +brayten +brayven +breland +brexley +breyer +brien +brighten +brylee +bryor +caeleb +caisyn +calel +calem +candon +canelo +carder +cardier +careem +carlson +carwyn +cas +castin +cayce +chan +chasin +chavis +chett +chrishaun +cire +clayson +codey +collen +collyn +colm +connell +connelly +corinthian +corleone +covey +creede +crews +croy +curt +cypher +cyprus +dadrian +daeson +daivion +dalon +damarkus +dannie +daryel +dasean +davide +davy +dawid +dawoud +dayvion +delfino +demonta +demontae +denilson +deshun +dharius +domenik +dominion +dorion +draiden +drax +dreshawn +dreyton +duran +durrell +dyami +ebubechukwu +ed +edras +ehren +eldin +elijha +elikai +elizandro +elkin +ellery +emily +emmerick +emperor +ephrem +ephriam +erian +esmond +evaristo +everrett +everton +ezechiel +ezequias +fabien +faron +farris +filippo +gamal +gardner +garion +ghassan +ghazi +giovannie +gleb +grace +gracyn +grahm +grainger +gregor +griezmann +gyan +haitham +hanniel +harlee +harvest +haseeb +hazem +heinrich +husayn +ibhan +icarus +idriss +igor +ilai +ingram +ion +islam +ivy +izaias +izeah +jaaziah +jaber +jabin +jachin +jackston +jacorian +jadien +jadis +jadriel +jahad +jahkari +jahki +jahmeir +jahmiel +jaisen +jakin +jaking +jamarian +jamias +jamiere +jancarlo +jaquavion +jaryn +javell +jaydence +jaysion +jeferson +jeovani +jeovanni +jerusalem +jhayden +jiaire +jiovanny +joakim +joas +jontae +joram +josean +joshuan +joss +juanluis +juda +juliocesar +justino +kaceon +kaedan +kahlo +kaidin +kailash +kaion +kaivion +kalei +kanden +kanin +karlin +kashon +kaspen +kastin +kavir +kaydn +kayin +kaylin +kayshawn +kayton +kazuki +kazuma +kealan +kedar +keean +keen +keir +kelyn +kemauri +kenden +keno +kenshin +kensley +keron +keshon +kesler +kestyn +khamani +khizar +khyaire +kiel +kinsley +kinston +kiyoshi +knighton +kobee +koden +korver +kratos +krystopher +kwan +kyce +kyel +kyi +kyier +kyrion +kysir +laithan +lakendrick +lavie +lavin +leandrew +liano +lindsey +linwood +lorik +lorne +luccas +ludwig +luxton +lyndell +lynkin +macgregor +maisyn +mak +makana +makhari +maki +malacai +malachy +manav +mankirat +manveer +marck +marvelous +marwin +marx +matson +maxten +merit +mikayel +milos +moataz +montae +montavious +montreal +moo +morton +muneeb +muneer +mylon +naetochukwu +nathyn +nature +nayef +nels +neri +netanel +neven +nicklas +nikkolas +nizar +nolawi +norbert +noxx +nur +oaklynn +odis +ollin +omni +oniel +onix +onur +oriel +osborn +oshae +ousman +paulino +princetin +quintrell +rachit +radin +raheel +rai +raife +raihan +rashaan +rasheem +ravon +redd +reiner +renton +reyli +rhaegar +rhylee +riccardo +ricco +riddik +rigley +rilan +ritter +robyn +rockland +rojelio +rollie +ronyn +royel +ruel +rufino +rutledge +ruvim +saahil +safaree +sahid +samaj +sarvesh +saverio +savva +scotland +sebastyan +senay +sergi +shah +shakeem +shep +shrihan +siddarth +silvano +sirroyal +sloane +smayan +sorren +sovereign +spenser +srijan +stacey +sufiyan +sy +syer +taahir +tal +talin +tanish +taten +terryn +thornton +tiam +tomasz +tori +toussaint +tresean +treveon +trice +triumph +trooper +truu +tymere +tysean +tyton +tyvon +uilliam +usmon +vallon +vardan +varian +vergil +vin +vinicio +viren +vishruth +vivian +vraj +wayden +weller +wendall +weylon +whitfield +wilton +winn +worth +yahye +yaser +yashua +yazn +yeiren +yerachmiel +yida +yosiel +yu +yunior +yussuf +yvan +zacharie +zakariyah +zarrar +zaryan +zaviyar +zende +zenon +zhayden +zuhaib +zurich +zylen +aadarsh +aadith +aahaan +aarib +aarsh +aarya +aavir +abdulsalam +abdulwahab +abyan +aceion +acesen +addiel +adom +adriell +ahlias +ahmar +ahmod +ahzir +aidenn +aiman +aitan +ajdin +akif +aldahir +aldric +aleks +alexio +alhassan +alieu +alihan +alioune +alix +alois +alva +amirr +amrom +aniket +ansen +apolo +aqib +aquarius +araf +arafat +areeb +ariez +ariv +arliss +armany +arnell +artez +artimus +aryn +asaun +ashir +ashish +ashland +ason +avant +aveion +avelino +avyon +ayodeji +badr +balian +bao +baptiste +barrington +bash +bashar +basilio +baxley +baz +beckhem +beka +benett +bereket +bergen +billion +bilol +blakely +blayton +bowe +brand +braxlee +brennex +brentyn +brevin +brextyn +briley +brisyn +brydan +brysan +buster +cadan +caesyn +cairee +calais +caldwell +camerin +camila +candelario +caydan +caylen +ceejay +cesare +channon +chanze +chayden +codie +colsyn +creedon +crist +culver +curran +cyaire +cyree +cyris +damonie +danel +dantae +darel +daryus +dasir +dason +davaughn +dawayne +daxen +daziel +dejour +deyon +deyton +dhani +diamante +dio +dom +dominico +drayke +dreden +drevon +dwain +eastan +edder +ederson +eito +eiven +ej +eladio +ella +ellie +emileo +emmeric +emmette +emryn +ennio +etai +evrett +eyal +eyoab +eyob +ezri +fadel +fahed +faheem +faizaan +feliks +feras +fielding +fitzwilliam +fowler +fransisco +frazier +gagan +garrus +geremy +gianluigi +godfrey +grafton +grantley +haaris +hadden +hani +harlym +harman +havish +haydyn +hemingway +heyden +hiroto +holy +howie +hughes +husam +huston +hux +huxon +ibn +ihan +ikaia +imanuel +isadore +isaia +isaiyah +isam +ishaaq +issah +issaiah +itamar +ivor +jabar +jabir +jac +jachai +jaelen +jamarii +jamarious +jamason +jamesen +jamez +jamill +jamoni +jamori +jantzen +jari +jariah +jashan +jasier +javani +javarion +jaxzen +jayco +jaydiel +jaymon +jayvier +jayvyn +jayzen +jayzon +jden +jeanpierre +jeet +jehan +jerel +jermain +jermari +jeron +jervon +jodeci +johanan +johnathen +johnhenry +johnie +johnrobert +johnston +joon +jorawar +joseantonio +josmar +jovante +jove +joy +juellz +jurgen +justen +kaenan +kaiyden +kajuan +kaled +kallahan +kalman +kalub +kameren +kamerin +kamoni +kanav +karlito +kasch +kashdyn +katai +kaveh +kaveon +kawan +kaynon +keinan +keldon +kelian +kelso +kemet +kemonte +kempton +kena +kendel +kenta +kenzie +keola +kermit +keygan +keylin +kham +khing +khiree +khup +khyle +kier +kimari +koki +krishal +krishan +krosby +kylyn +kyngsten +kysin +kyzir +ladainian +laden +lakin +landynn +leanthony +len +lenix +leoncio +lexton +loay +lotanna +lukka +lumen +lynken +maddyx +mahmood +maicol +makell +mako +malahki +maleik +mansour +marqus +martavis +masato +masiyah +matei +matis +mattheus +matthews +matvei +matyas +maxximus +maycen +mays +mel +messiyah +mickael +mihailo +mikale +mikias +milano +modesto +mohab +mohamud +moise +moustafa +muaad +muhamad +muscab +myson +naazir +nachum +nakhi +nalan +nalu +namari +naquan +narciso +nataniel +nazari +neer +nephi +nesta +neville +nicholi +nihaan +noach +nyree +obsidian +oluwadamilare +oluwatimilehin +orville +ottis +oxley +ozil +panth +parv +patric +patterson +perez +petros +phelix +potter +praneel +pratik +prithvi +prometheus +quashawn +quintavious +raad +ramsay +ranbir +rance +randon +rasean +rasmus +raynard +red +refoel +reiss +renan +reo +revere +revin +reynold +rhiley +roc +romulus +roni +ronit +roux +rutherford +ry +ryleigh +ryman +saiyan +sakai +saksham +salaar +sandor +santanna +saulo +sayf +sebastain +sehaj +seleem +sencere +sequoia +serigne +shaden +shadow +shaheed +shaheem +shaheer +shamari +sharvil +shaye +shedrick +sherwood +shooter +shuaib +sigmund +simba +sina +sirking +sixto +sohaib +sohail +sriyansh +stanislaw +stefanos +story +suede +swayze +tamari +taos +tareq +taveon +tayo +tayon +tayvin +tedrick +telvin +terance +terrick +tipton +tobechukwu +tobey +tobyn +tovia +treasure +trevis +tri +trillion +turki +tyrian +ugonna +ulyses +umer +unique +vadhir +varick +victoriano +vikrant +vitaliy +vitaly +vladislav +waelyn +warden +weslyn +whitton +wilkins +willson +wyn +xylo +xzavian +xzayvian +yadir +yandriel +yang +yehia +yousaf +yovanny +yuchen +yujin +yuki +yuriy +zacariah +zacarri +zahran +zalen +zaron +zavior +zebedee +zeddicus +zeki +zolan +zoran +zuko +zyad +zyren +aariyan +abdelrahman +abdikadir +abdulhamid +abednego +abiy +adarsh +addicus +ade +adedayo +adhiraj +adrick +adryen +adyant +aemon +aerys +agasthya +ahil +ahmeer +aidden +aimar +akin +aksh +aksil +alcides +alem +alexandr +alikhan +alistar +aliyas +allias +alter +alvino +amad +amando +amelia +amitoj +amontae +andrus +angelus +aniketh +anri +anthonny +apolinar +aquila +archivaldo +ardyn +arel +arias +arlon +arnaldo +arpan +arsal +arseniy +arshiv +artemus +ary +aryav +asahi +ase +aseem +ashdon +aster +atwood +audi +augustino +aundre +auryn +ava +avon +avriel +avyansh +awesome +axeton +axxel +aydn +aylen +ayo +azarius +azariyah +azra +azreal +azzam +bairon +baldwin +bankston +barkon +barnabas +basel +bassel +bence +bernie +berry +bishoy +blanton +bobbie +bomani +bonham +bradon +braelynn +brance +branston +breckon +brenan +breslin +breydon +brinson +britt +brom +bronze +brookson +bryland +brynn +bryse +caelen +caidence +cailen +calcifer +calib +camaron +camelo +cardell +casten +caven +caydon +chasten +chazz +chesney +chetan +cheveyo +chikamso +chrishawn +christophe +chrystian +chuck +cliffton +cobey +coburn +corion +corran +creeden +crockett +crosley +cung +dace +daelin +daelon +dahmir +daichi +daimon +dairon +daltyn +damiere +danzel +dathan +daviyon +daxyn +dayquan +dayshawn +deandrea +dearius +deaundre +deivid +delsin +demetre +denarius +dereon +desmon +destiny +dezmon +dhruvin +dian +diem +dimitris +domanic +dominiq +donzell +doss +dragon +dresean +drevion +dryden +dujuan +durham +eames +edilson +ediz +edriel +edwar +eider +eivan +eldridge +elih +elijahjames +elior +elius +elizah +elizjah +elo +elzie +emaan +emauri +emelio +emerald +emma +emori +enderson +enso +eon +errick +estes +esvin +euro +eusebio +evelio +even +evrhett +eyasu +ezaan +ezekyel +ezykiel +farzad +favor +fender +frantz +fredi +freedom +gaberiel +gaston +gavan +gedalya +gehrig +gerry +gianfranco +gilmer +grae +gram +granville +greison +gresham +greydon +greysun +guilherme +gurshan +hamze +haneef +hanif +harel +haron +harout +harshith +hassen +hau +hawthorn +hayan +haygen +hayston +hayven +hazim +hermes +herson +hezekiyah +hieu +hinson +hiroki +holdan +hope +hyder +ido +ikal +ikeem +imaan +imri +inioluwa +inmer +isco +isley +jaan +jacks +jacksen +jadore +jadrian +jahsai +jaicob +jaisean +jajuan +jamaine +jamarrion +jameison +jamelle +jamis +jaquon +jarian +jaryan +jaskirat +jaspen +javid +javonta +javy +jawon +jaxsten +jaydrian +jaye +jaymir +jayshon +jazir +jemari +jenil +jeorge +jeramy +jermel +jerrold +jerzy +jessey +jeston +jhordy +joaopedro +jodie +johari +johnanthony +johnell +johnthomas +jolan +josafat +joshia +jossiel +jsiah +juliann +julion +julyan +juneau +juriel +jw +kabeer +kacy +kaelen +kagen +kahaan +kahiau +kahreem +kaiven +kalder +kalif +kalvyn +kalyan +kamaal +kamaree +kamarian +kamarii +kanaloa +kanton +kao +karden +kartel +kassim +kaydien +kaylum +kaymen +kaynin +kayon +kayron +kayse +kayveon +keano +keaston +keian +keiler +keiron +keiser +kellyn +kenya +keo +keraun +kerwin +kesean +kevan +kevaughn +khal +khalib +khase +khody +khoen +khris +khyan +khysen +khyzer +kijani +kingmichael +kinley +kinson +kiowa +kire +kirkland +kison +klark +koba +kort +korvin +krayton +krimson +kroix +kron +kylee +kymeir +kyzah +lajuan +lakeland +laker +lam +lamelo +lanson +leah +leelyn +leeon +leondre +leondro +leshawn +lewi +liandro +librado +liel +lochlin +lochlyn +loreto +lorin +love +luay +lydell +lynk +lynkoln +lyonel +macksen +magnum +majed +makaveli +maleko +malikhi +malikye +malvin +mamadi +manan +mang +marcanthony +marcelus +marcoantonio +marcon +marquavious +marston +martavius +masson +mathius +mattew +mattia +maxfield +maxtin +maykel +maze +mckinnon +meiko +meliodas +menashe +meshal +meziah +mikaele +mikyle +millard +mio +miroslav +mitt +moustapha +muhammadyusuf +muhanad +murat +nahshon +nahzir +nainoa +naoki +necalli +nehan +neji +nevyn +neylan +nihaal +nihith +nijel +nima +nimalan +nivek +noar +nochum +noeh +nohlan +north +nussen +nyeem +nylen +olamide +olivander +oluwaseyi +omran +orhan +orien +oryon +oshay +osmond +otoniel +paarth +panayiotis +parish +pavan +pepper +pernell +phinneas +phoenixx +pilot +portland +poyraz +pranay +prentiss +preslee +prestin +quentyn +quintez +raheim +rahsaan +raidon +raif +rajon +rama +rani +rashan +rashun +raudel +raygen +raylyn +raymir +rayniel +rayshon +regino +rennick +rexx +rhylen +ridhan +rilee +robertson +romani +romann +romyn +rorick +roshawn +royston +ruari +rydan +ryheem +rylynn +safal +salahuddin +salmaan +saquan +sarkis +savian +sayyid +seager +sender +sensei +shahzain +shamus +sharbel +sharod +shehab +shenouda +sheridan +shivank +shoaib +shubham +shyloh +sicario +siddh +siddhanth +siddiq +silverio +sirron +skanda +skylor +slayden +snyder +solan +soma +somtochukwu +sosuke +spiro +stepan +sudeys +sufian +sufyaan +suhan +suheyb +suyash +suyog +sway +syd +tadashi +taedyn +tashon +tavi +tayshaun +tayte +tekoa +tenoch +terez +thackery +therin +thorsen +thoryn +thurman +tlaloc +toluwalase +traiden +traveon +trea +treyveon +trig +trustin +tymeir +tyon +urie +uzay +vandon +veeraj +venice +ventura +vidhur +vishaan +watts +wesam +wilde +willaim +winchester +winfield +winfred +wisam +wulfric +wynton +xaidyn +xamir +xayvion +yaasir +yahmir +yahweh +yancy +yann +yarel +yecheskel +yedidya +yerick +yian +yifan +yiming +yordan +yoriel +yoshi +yuheng +zagan +zakiah +zani +zarian +zaya +zayin +zayir +zayvon +zekai +zevi +ziair +zigmund +zoraiz +zoravar +zyking +zymeer +aadhavan +aadish +aarron +abdalrahman +abdi +abdo +abdulkadir +abdullatif +abrian +absalom +abubaker +acer +aceton +achintya +adalid +addai +adedamola +adiv +adrial +adriann +aeneas +aeric +agamveer +agostino +ahadu +ahking +ahmarion +ahmier +ahmon +ahsiah +ahzab +ajahni +alaa +alam +alazar +alby +alecxander +aleph +alexa +alexandar +alika +allison +almighty +alson +altan +amahd +amenadiel +americo +amiyas +ammaar +amore +amrit +amunra +anakyn +andon +anfernee +angelito +anh +aniel +anir +antavious +anthonie +anuj +aodhan +arcadio +areg +ariah +arick +arinzechukwu +aristides +ariyon +armor +arseny +arshaan +artavious +artemiy +arvid +arwin +aryo +asah +aser +ashrith +atif +audel +avaan +avante +avelardo +averey +avish +avontae +avonte +avory +axon +axtin +aydien +ayon +ayuub +ayyash +azam +azaria +azavier +azi +aziyah +azizbek +bader +bailor +baran +barrick +basim +baylee +beckum +behruz +bensyn +bento +beric +bezaleel +bingham +blayde +bowdy +bran +braxdon +breighton +brek +breken +brennyn +brex +breylen +breyon +brisen +brixx +brodyn +bronsen +bronsyn +bruk +brycin +brynden +bryxton +caetano +caige +calvert +cameran +camil +camp +canek +carlens +carpenter +carroll +cartel +cartez +cashden +caynen +cayo +caysin +cecilio +chamberlain +chanoch +chanson +chapel +charan +charlotte +charming +chaseton +chayson +chibueze +chimaobi +chinedu +chinedum +chrishon +christain +christobal +chrystopher +colbie +coltrane +conlin +coven +cowen +crash +cylan +cyle +dacarri +dacian +daedalus +dagim +dagmawi +dago +daison +daivon +dakarion +dallon +damarious +damone +daniele +danish +dansby +darragh +darrow +davari +davontay +davud +dawan +daysean +dayyan +deadrian +deandrew +deavon +decimus +declen +deddrick +dekhari +del +delroy +delvon +demaree +demarious +demeir +demetrious +demilade +dennys +deo +deontray +derrin +devendra +deyren +dhilan +diante +dieter +dillyn +dima +diyon +djibril +doniyor +doron +dovi +draysen +dredyn +dugan +durell +ebin +edwardo +efrem +ehaan +ehab +eirik +eldar +eliav +eligio +eloi +eluzer +elway +emaad +emeka +enki +ero +erron +esaiah +estiven +eulalio +everet +everly +evert +evian +eyas +ezer +ezren +faaris +facundo +famous +farzan +felton +field +filipe +finbar +finch +flynt +fordham +fouad +gabryel +garnet +gaurik +gavi +geovonni +germany +gerrard +gevorg +giuliani +graden +gradyn +grayer +grayton +greylen +grimm +gurshaan +hameed +hanzel +hasib +haylen +henning +herminio +hill +hiyan +hrihaan +huxson +hykeem +ihsaan +imer +imir +iremide +isahi +isaih +ishak +ishank +issachar +issam +issiah +iyaan +izai +izick +jabbar +jabri +jaccob +jadarrius +jadin +jaecion +jaelin +jaelon +jaevon +jah +jahcere +jahmeer +jahvon +jahzir +jaidin +jaishawn +jakaree +jakorey +jalan +jameis +jansiel +janthony +janziel +jarom +jaseer +jaston +jatavion +jathniel +javarius +jawuan +jaxel +jaxxyn +jaxzon +jayace +jaydien +jayke +jaymere +jayniel +jayonni +jayston +jayziah +jazen +jazion +jeramie +jeramyah +jerek +jeremey +jeren +jeric +jerman +jermani +jermir +jerod +jerrin +jersiah +jesper +jetsen +jewell +jeyren +jhordan +jiaan +jiro +joby +johncarlos +johnmark +johnpatrick +jonel +joren +jovin +joziel +july +juma +kaedin +kaegan +kaelem +kaemon +kaevon +kahri +kahron +kaien +kaique +kairyn +kaisan +kaivon +kaleab +kaleem +kalijah +kamali +kambryn +kamuela +kanari +kaniel +kanyn +kap +kardier +karman +karol +kartik +kasher +kasson +kavari +kaxton +kayhan +kaysyn +keahi +keene +keenen +keenon +keilyn +keison +keivon +kelvyn +kendan +kendryck +kenechukwu +keng +kenlin +kenna +kentlee +keynan +keyvon +khadir +kharon +khayson +khiyon +khizer +khyden +khyir +khylar +kiante +kie +kierce +kilan +kingjosiah +kingsly +kiree +kiros +kohan +kohlton +kolbi +koltan +kotaro +kovi +kovu +kristan +krithvik +kuba +kuiper +kunal +kwadwo +kwaku +kyeson +kylynn +kynng +kyreese +kyris +kyryn +kyzar +lachlann +lain +laird +laithen +lakeith +lakoda +lamario +lamontae +lan +landrey +larell +lashaun +latavius +lavontae +lawsen +leangelo +lehi +leigh +leilan +leodan +les +levan +levar +livingston +long +loy +ludo +lukis +lupe +luxx +lyden +lyriq +maanav +macallister +mackinley +macklan +maclan +maclean +madyx +mahzi +maitreya +maize +makye +malaquias +malekai +maleki +malick +manvir +marcas +marchello +markee +marlen +marque +marquette +masin +mathyus +matrix +matthan +mavryck +mayan +maycol +mayjor +mcclain +mclane +medhansh +meeko +melakai +mercury +merick +merrill +micajah +michele +mickel +mikaal +mikelle +mikhi +miraj +mirko +miyon +mohamedali +mohammadali +mohammedali +mokshith +momodou +montay +mordcha +mosheh +mosi +moss +muhammadamin +muzamil +muzammil +mykal +myshawn +nakoda +nameer +narayan +naren +nasai +nasiir +natsu +navier +nazeer +naziah +nazim +nehemyah +nevo +nezar +ngawang +nicholaus +nikan +nikash +nikoloz +nimit +nio +nirvair +nishaan +nissim +niv +noyan +nyan +nygel +nyheem +nylo +olivia +olumide +oluwafemi +oluwatamilore +oluwatoni +omair +omaree +omauri +ontario +oreoluwa +osama +osborne +othello +ovidio +owin +owynn +patience +phelan +phong +piers +pinchos +piper +powell +pranish +pratyush +praxton +presten +priansh +primo +princetyn +quartez +quavon +quinston +quint +raaghav +raahim +raam +raedyn +raef +raelyn +rafa +rahi +rahkeem +rahmeek +rahmel +rajan +ramari +ramez +ramond +randel +raydyn +rayen +raynell +rayon +redford +reily +remo +reon +reston +reyhan +rhet +rhoen +riad +rilen +rilo +riott +rohin +rollins +rollo +romari +roniel +rori +roston +ruairi +rudi +rudolf +ruxin +rydin +rykin +rylyn +rynn +saair +sadler +saed +sael +safir +sahel +samik +sanjeev +santy +satya +savage +schneider +sebashtian +sebatian +selwyn +semir +serafin +seraj +seraphim +shahab +shahzad +shalev +shashwat +shivan +shomari +shriyaan +shuraim +shyheem +sian +siegfried +sinai +siyon +skip +slone +socrates +sofia +soldier +srihith +starling +steffon +stormy +stylez +success +suliman +sumedh +swayam +szymon +tabius +taevon +taheem +taika +taison +tait +taiyo +talion +talmadge +tano +tarrence +teancum +temidayo +terek +terrill +terrin +tevon +tharun +theory +thorn +thorne +thorson +tilak +timmothy +toluwani +toney +topher +tor +torion +torrion +tracker +trashawn +trayton +trendon +treyshawn +tritt +troi +troyce +tryson +tryton +tuvia +tyke +tyrice +tywan +tzion +ulric +vaden +vaelin +val +valerio +valon +vanden +vardaan +ventus +vic +vidit +vidyuth +viet +vijay +vinay +vinton +vuk +warrior +weiland +weyland +weylen +whitney +wise +xade +xavious +xeno +xyaire +xylan +yanal +yancey +yaniv +yaqoob +yaw +yazir +yigit +yoav +yohanan +yonas +yousof +yuan +yuv +zacharius +zacharyah +zadiel +zae +zafar +zakhai +zakye +zakyrie +zamire +zanden +zarif +zarius +zaxon +zaydn +zeal +zedric +zephyrus +zepplin +ziere +zimir +zinedine +ziya +ziyah +zoey +zyrus +aaban +aanay +aashrith +aasiah +aayaan +abaan +aban +abdinasir +abdou +abdulla +abdulqadir +abdulsamad +abem +abhi +abid +abie +abijah +acey +acheron +achyuth +acie +acxel +adeola +adeoluwa +adewale +adison +adoniram +adorian +adream +adriaan +adris +aerion +agniv +aikam +aizik +ajan +akeen +akul +alakay +alameen +alann +aldyn +alexiel +alexios +alexxander +alezander +alhaji +alian +alija +alin +aliou +aliyan +almin +alyus +alyx +amaad +amadi +amadu +amais +amal +amedeo +amnen +anagh +ananth +anari +andris +andrzej +aneudy +anmay +anselm +anthoney +anthuan +antonin +antonyo +anu +anzel +aragorn +araoluwa +arcadius +arch +arek +ariam +arieon +arihaan +arkham +arleigh +armel +armelo +armondo +armonie +arrion +arro +arshad +artyom +arvik +aryansh +arzaan +aseel +ashvath +aslam +aspyn +atlantis +aukai +auri +auriel +autry +avrumy +axe +aydrien +ayhan +ayiden +aymaan +ayomiposi +ayren +ayron +ayushman +ayzen +azaad +azair +azayah +azeez +babacar +banx +barnaby +barren +basile +bates +bayek +behren +beni +bennington +benno +bentlei +berend +bex +bezalel +biagio +blaiz +boen +boluwatife +bosten +bowdrie +brailen +bralynn +brasen +brasi +braxtynn +braylynn +breckan +brexten +brey +breylin +brio +britten +brixxon +brogen +bronn +bryaire +bryceon +bryceton +brysten +brysyn +caelin +caide +cainaan +caladin +calahan +callister +calvary +cambren +camdan +camdin +cardin +carsin +casanova +cashmir +caycen +caymen +cebastian +cedrik +chai +chambers +chaysen +cheick +cherif +chidiebube +chimdindu +chinonso +chisom +chisum +choice +choyce +christensen +christion +christyan +claudius +claytin +cletus +clever +coast +colyn +conroy +cormick +corrin +corry +corvus +crayton +cresencio +crystian +daemian +daemien +dagen +daiquan +daishawn +daiton +daiwik +dajohn +dakson +dakston +dallan +damarian +damaris +damarri +dameer +dametrius +damin +danis +daniyar +darson +dartanian +dashun +davison +dayden +daysen +daytona +dechlan +decklen +deejay +dejaun +dejay +delorean +delta +demarian +demarko +demaryius +demetric +demichael +demid +denahi +derringer +deryk +desiah +desiderio +desire +destry +detroit +devereaux +dewitt +dexten +deylan +deylin +deyvis +dezion +diallo +diandre +dillen +dilraj +dionne +diontae +djuan +dkari +dkhari +dmani +dmauri +dodger +doran +dorrell +dovber +drago +dravin +draydon +drequan +dreson +dreydon +dreylon +dudley +dusan +duvan +dvaughn +dvonte +dwaine +dwij +dylin +dyon +edi +edoardo +egon +eion +eithen +ekamveer +eland +elay +elchanan +elek +elham +elhanan +elin +elisio +eliu +eliyohu +elizar +elizer +ellioth +elnatan +elorm +embry +emilson +emmanual +emoni +enam +eno +enver +enzio +eran +eri +eriberto +essiah +esten +ethanjames +eustace +evon +eyoas +eyram +eyuel +ezekeil +farouk +farren +fennec +fields +finesse +forbes +franciszek +franck +gabriell +gad +garin +georgie +geraldo +germain +giann +gianno +giano +gildardo +giomar +giordano +giulian +glory +gowtham +graisen +greyston +grigor +gumaro +gurjas +gurnoor +haegan +hafiz +haim +haizen +hammond +hamse +harald +harden +harjas +harsh +hartford +harvard +harveer +haseem +hatch +havok +hawkin +heiko +hermilo +heshy +het +hetvik +hezakiah +hiyab +hobie +huckston +hudhayfah +hunt +ifeanyi +ifeanyichukwu +ilo +ilyan +indi +indio +indra +iosefa +irfaan +irlan +isandro +ishay +isidoro +isrrael +ives +ivey +izell +izyk +jabes +jacai +jacarion +jacy +jadel +jago +jahid +jahmai +jahrell +jahsi +jaicion +jairon +jaiyon +jakodi +jakyi +jakyree +jamarkus +jamyson +janciel +janniel +jansel +jaquarius +jaquis +jasahd +jasaiah +jasani +jaseon +jash +jatin +javarri +jawaun +jaxdon +jaxs +jayde +jaydis +jayjay +jaylee +jaylenn +jaymie +jayriel +jaysin +jayveer +jeice +jemar +jemuel +jeniel +jepsen +jeremia +jeremmy +jeriyah +jermany +jermey +jermon +jeryl +jeryn +jese +jessen +jettsen +jewelz +jexiel +jhony +jiancarlo +jiayi +jibran +jiram +jishnu +joaniel +joanthony +jocsan +johaan +johnlucas +jonathen +jonell +jonnathan +jordani +jorell +jorgeluis +jos +josecarlos +josep +josten +joven +jp +jt +juanangel +juandedios +jubran +jujhar +jule +julious +juniel +justo +juventino +jvon +kaanan +kable +kaceyn +kache +kader +kaenon +kahekili +kailon +kaimen +kairan +kaitochukwu +kaiwen +kaizon +kaizyn +kalab +kalet +kaliq +kalob +kamarie +kamaron +kamarri +kamry +kaptain +karm +karriem +karsyon +kartikeya +kas +kasaan +kaseton +kashious +kashis +kashston +kathan +katrell +kavik +kayode +kaysn +kazen +kazim +kden +keanan +kebron +kedric +keighan +keilen +keimari +kelani +kelon +kenaan +kendle +keneth +kennis +kennison +kentley +keoki +kerrigan +kester +keylen +keymarion +keyron +keyston +khaaliq +khabib +khalani +khamar +khanh +khash +khepri +khilan +khingston +khonor +khyro +khyron +ki +kiam +kiandre +kieron +kierre +kiezer +kiko +kingamir +kingzion +kiyansh +knoxley +kobyn +kolesyn +kolyn +konnar +kopelan +koray +kourtney +kovin +kriday +krishanth +krishay +kristen +kunga +kyale +kyriakos +kyrus +kyzaiah +kyzier +lacy +lamier +lamine +lamon +lasean +lathen +latif +lavarius +lavaughn +lawrance +layke +lazarius +leart +leeum +leiam +lelend +lelynd +lennyn +lenyn +leomar +leonell +leontae +leovani +leriel +lexander +lexon +liamjames +light +liham +liiam +linux +lionell +lissandro +lj +llewellyn +lochland +logun +logyn +lohith +lon +londen +lorence +lotus +lucion +lui +lydon +lyman +lyrick +lyrix +maalik +macallen +macarius +mackay +macklyn +maclane +maddock +madyan +mahith +maikol +malyki +mana +manson +mansoor +marcelle +marcin +markelle +marken +markie +markis +marson +marven +marvis +mascud +masoud +massai +massi +mateusz +matheson +matthais +mattson +matviy +mayank +maykol +mazon +mclain +meritt +merric +mesiyah +messi +micael +miciah +micky +mihran +miklos +milen +min +miquel +miraan +mohanad +moishy +monson +montrel +morad +mordchai +mordy +moroni +mox +muhib +muir +munachimso +mung +mutasim +myrick +myzel +nadim +naftula +najm +nalij +nanayaw +nashaun +nashon +nashville +nathanel +nathon +navarre +navdeep +nebras +nechemia +neill +neilson +nelvin +neon +nethan +nevada +nguyen +nhan +nicanor +nickoli +nieko +niel +niels +nishant +nix +nixson +noahjames +noan +nollan +nora +nouman +nuchem +nykolas +nyx +oconnor +olaf +olamiposi +oleg +oli +olias +olufemi +oluwaferanmi +oluwanifemi +oluwasemilore +olyn +omarian +ondre +onyekachi +oryen +oshane +osmani +osten +osvin +otavio +otha +owain +oxford +ozymandias +paddy +paisley +pavle +payce +pendleton +perceus +pesach +peterson +pinches +prabhnoor +princeamir +princedavid +prinston +priyam +pruitt +psalm +quavion +quintavius +quron +raahil +rae +raeshawn +rafay +rahmier +rahyl +ralphael +rambo +ramell +ramere +ramin +rana +rane +raoul +rasul +raunak +raydel +rayhaan +raza +reason +rein +reinier +rembrandt +remingtyn +remmi +renlee +rennen +rephael +revaan +rhonan +rhye +rhylin +richardson +rigdon +riggen +rigsby +rilynn +riordan +rivaldo +rixon +riyom +rizzo +roane +roberth +roby +rocklin +rodriquez +rohn +rohnan +romance +romeir +romin +ronal +ronnel +rorke +rovin +royer +rubens +rustam +rutvij +rydder +ryelan +rylend +rylo +ryn +ryze +saba +sadiel +safwaan +saivon +sajad +saketh +sal +samarion +samil +samwell +samyar +sanay +sanjith +saransh +saurav +sayden +sayon +sebasthian +seferino +selassie +senna +sepehr +sergey +serjio +sevastian +seyon +shaddai +shaddix +shahar +shamel +shamon +shaqir +shariq +sharvin +shervin +shine +shota +shreyaan +shylo +siaan +siaosi +silvan +sinclair +siyah +siyan +skyden +skylen +slaton +son +sosa +starlin +statham +staton +stellar +stevon +striker +suan +surafel +suren +suvir +syere +tacoma +taden +tae +taeden +taeyang +tahmir +taiwan +takeo +takhari +tama +tan +tanden +tanvik +tanvish +taras +tareek +tarin +tarion +taseen +tavarious +tavarus +tavien +tavita +tavyn +tawfiq +taysean +tesla +tha +thailand +thanatos +theophilos +thurston +tiller +timo +tobie +toran +toretto +toribio +torre +torrell +toure +traeden +traeger +traelyn +tramel +traycen +traylen +trayveon +trek +trelyn +tremain +tremir +tremon +treson +trevelle +treycen +treylin +treylon +tryce +tuan +tyger +tyheem +tylee +tyme +tyndale +tyrece +tyreik +tyreon +tyriek +tyris +tysin +tywon +uday +ugochukwu +ukiah +unnamed +utah +valdemar +vasili +vedhanth +veera +vetri +victoria +viliami +vinicius +vishva +vitali +wafi +wakefield +wasim +werner +wess +whalen +whelan +wil +wilian +winton +wrangler +wyatte +wylde +wyler +wylin +xandyr +xavyer +xayvier +xxavier +xzayden +xzayvion +yahsir +yale +yancarlos +yaphet +yara +yaron +yaroslav +yashwin +yinuo +yochanan +yoniel +yossef +youness +yulien +yusha +yussef +zaair +zabian +zacheriah +zafir +zahi +zahkai +zahkari +zai +zaide +zailen +zaiyan +zakaree +zakarie +zamarian +zandyr +zariel +zaryn +zaveon +zaviar +zaxtyn +zaydian +zaynn +zecharia +zeo +zeyn +zhamir +zhavia +zionn +zuhayr +zyeir +zyel +zyen +zylar +zylus +zymarion +aabid +aadhiran +aadyant +aaidyn +aamari +aamer +aanik +aansh +aaraf +aarvik +aavan +abas +abass +abba +abdelaziz +abdihakim +abdirizak +abdishakur +abdourahman +abdriel +abdulrahim +abdurrehman +aben +abshir +abubakarr +aceston +acesyn +adagio +adain +addam +adetokunbo +adeyemi +adis +adonys +adren +adrin +adrius +adryel +aedon +aegon +agamjot +ahlijah +aidenjames +aimen +ainsley +aires +aitor +aizaiah +ajayi +akela +akelius +akshath +alano +alante +alcide +aleki +alexius +alexsandro +alexzavier +alic +alicio +alie +alijiah +alisher +aliyus +allijah +allistair +alontae +alonte +alphonzo +alric +alrick +alwin +alyxander +amerson +amey +amouri +amram +amuri +ananda +andranik +andray +andrews +andria +andrue +aneek +angelos +anikin +anil +annuel +ansumana +antares +anush +ao +aoun +apolonio +apostolos +aquil +ardian +areli +arhaam +arib +arinze +aristeo +arlind +armahni +arnez +arnie +arrie +arris +arrison +arson +arta +arteen +artie +artorias +aryaan +aryaveer +aryen +aryus +asadbek +ashai +ashan +ashawn +ashaz +ashot +ashvin +ashvith +astor +athiran +athos +audvik +augus +augusta +aulden +aurelian +autumn +avalon +avaneesh +averee +aviyan +avrumi +awad +axavier +axil +axzel +aydian +ayeden +ayton +ayvian +azar +azavion +azen +azil +azuriah +azzan +bach +baird +baldemar +baldomero +balen +balraj +bandon +bardia +barin +barkot +basem +basir +bay +bayan +bearon +beauman +behrett +behzad +bekim +bemnet +benen +benjen +benjermin +benn +bentli +bentzy +benz +benzino +beowulf +berel +beren +berk +beshoy +bhavya +bhuvan +billie +birk +blaiden +blin +blythe +bocephus +bodhin +bohden +borna +boyan +boyer +bracen +bradey +braelon +bralon +brason +brenham +brenn +brentin +breton +breylon +bricyn +bridge +brig +briggston +brinton +briston +briton +brittain +brixtyn +brodan +brooke +broox +brysun +buchanan +bulmaro +burk +burl +buxton +byran +cable +caffrey +cairon +calden +callisto +calvyn +camauri +camir +campton +canden +cantrell +caseton +cashis +caster +caswell +catalino +caton +cayetano +cayse +chaddrick +chadrick +chancey +channin +charm +chastin +chasyn +chauncy +cheng +cheston +chevelle +chi +chiagoziem +chijioke +chiron +chistopher +chloe +chrisangel +chrishun +christien +christin +christo +chukwuebuka +chukwuka +cin +coalson +cogan +coleston +columbus +conrado +cordel +corian +corvon +covin +cowan +coye +creo +criss +cristino +czar +dacion +dacoda +daelynn +daemar +daemion +daequan +dahir +daimen +dakshith +daley +dalin +dalonte +dalten +damacio +damaree +damere +damico +danari +danek +danila +danton +darick +darkiel +darnel +darreon +darris +dasani +daveyon +davyan +daxston +daxxton +dayjon +daylyn +dayven +deair +deaven +decarlos +decland +declin +dee +delante +delwin +demarquis +demarrion +demetrice +demonie +demontre +demyan +deni +dennison +denson +dermot +deryck +desai +dessiah +destan +detric +devarius +devaun +devonne +dewan +dextin +deyan +dezi +dhanvin +dheer +dhven +dhyaan +dhyey +diar +dillian +dilon +dilyn +dimitar +dionysus +dmarius +do +dominyk +donal +donathan +donaven +donavyn +donovon +dontre +dontrel +donyae +doug +drae +draelyn +draylon +dreon +dreshaun +dreshon +dreu +drystan +dublin +dwade +dymere +dysen +eashan +ebrima +edden +edgard +edil +edis +edmon +efosa +efran +ege +eghosa +eiji +eiker +eilon +ekemini +ekin +elad +eliann +elioenai +eliphaz +elisee +elix +elizeo +elkan +ellsworth +elmin +elrick +elysian +emmanuelle +emryk +endy +engel +enner +enok +erixon +erza +esias +esmail +estin +ethin +evann +evers +ewen +exzavier +eylan +eylon +eymen +eyosias +ezael +ezar +ezekio +ezran +faith +falco +fallou +faraj +fardeen +faruq +fate +fazal +ferguson +fidencio +folarin +fortune +frans +frederico +frey +freyr +fuller +furious +gabrielle +gadsden +gaell +galvin +gamble +gannen +gariel +garrix +garvin +garyson +gaten +general +gent +georg +gianlucca +giavonni +gibril +gift +gilead +giovan +giovonnie +godrick +godson +gordan +goten +grantlee +grasyn +graylan +graysin +grayston +grier +griffon +grizzly +guled +gunter +gurjot +gursehaj +gurtaj +gurveer +gustaf +haashir +hadriel +hady +haji +hajj +hamsa +hanzo +haochen +haoran +hardison +harfateh +harith +harmony +hastings +haston +hatim +haydar +hayder +hazaiah +haziq +heiden +helo +hemi +hennessy +hermon +hever +hezikiah +hezron +hian +hilal +hilo +hodari +hondo +hovhannes +hrishaan +huckson +humzah +husnain +idrissa +ignazio +iliyas +imisioluwa +inri +iris +irish +isaaq +isack +isaiahs +isaid +iskander +ismaila +issei +itsuki +ivon +iyanuoluwa +izaeah +izhan +izsak +jacaiden +jacere +jacieon +jacier +jacir +jadiah +jaesean +jaeven +jahaad +jahaan +jahcari +jahdani +jahmal +jahmani +jahmel +jahmi +jahmil +jahon +jaidev +jaiel +jaiking +jaimin +jaivian +jaivin +jaiyden +jaizon +jakarion +jakel +jaki +jalex +jalonnie +jamani +jamesley +jamesmichael +jamorion +japhet +jaquari +jareese +jarrel +jasaun +jashun +jasire +jasiri +jasraj +jastin +jatavious +javel +javontay +jaxan +jaxcen +jaxden +jaxsun +jaydel +jaylani +jayro +jazari +jedrick +jedson +jefry +jefte +jehiel +jemarion +jenish +jenkins +jensin +jeovanny +jerardo +jereme +jerik +jerin +jermane +jeromiah +jerren +jerrion +jevin +jhamar +jhayce +jhoniel +jhosep +jhostin +jhovani +jhovanny +jihan +jiles +jirah +jivan +jmarion +jo +joakin +joandry +joban +jodi +joevanni +johnniel +johnryan +jontavious +jonuel +jori +jorje +josedaniel +joseth +joshiah +josuel +jozeph +jozhiel +joziyah +jrake +jsean +json +juanantonio +judea +julias +julyen +junius +juron +jvion +jyair +jye +kacee +kaceion +kadan +kadari +kadeyn +kado +kadri +kaedynn +kaelon +kaesin +kaheem +kahleel +kahlel +kahleo +kahler +kaiba +kaido +kailum +kainin +kairin +kalden +kalief +kalino +kamai +kamen +kamon +kamori +kannyn +kapono +karamo +karis +karmine +karron +kashe +kashmier +kashyap +kaspar +kaspien +kasra +kavani +kavian +kaw +kay +kaycion +kayen +kayman +kayren +kaysten +kayvin +keab +kedan +keeden +keeghan +keelen +keeshawn +keiston +keizer +kel +keldan +keldric +kellian +kendyl +kenlee +kenmari +kenric +kensen +kentavious +kentrel +kerolos +kerron +kershaw +keshun +keyion +keymon +keymoni +keyshaun +kezlin +khadar +khaidyn +khair +khalen +khaleo +khamden +khani +khian +khilyn +khodi +kholton +khylon +kidd +killion +kilo +kim +kino +kionte +kiryn +kishawn +kiylan +knoble +knoxlee +koal +kobain +kobin +koe +kohler +kollen +konan +koran +kordae +korion +kosei +kraig +kristion +ku +kumar +kuol +kuyper +kvon +kweli +kyeir +kyere +kylil +kyloren +kyrillos +kyroe +kyshon +kyvin +kyvon +laakea +laikynn +lakyn +lamarius +lanny +lathaniel +layn +lazzaro +ledgen +leeandre +legendary +legennd +leibish +leighland +lendell +lennard +leny +leonhard +lesandro +levee +liang +life +lindell +liyan +llewelyn +lochlen +locklan +locklen +lockwood +locryn +lonan +louka +lovensky +ludovico +lukaz +lumi +lumiere +luqmaan +luxe +lynix +maan +macaulay +machi +maciah +mackinnon +maclyn +macson +macyn +maddoxx +mahil +maier +mainor +majik +makarios +makeen +makeo +malex +malhar +malikiah +malyk +mandela +mani +manil +manmeet +mansur +manuia +marcellis +mareon +mari +markai +markeese +markhi +markian +marrion +marsden +martyn +masir +maslah +masood +matas +mati +mattison +matua +maverix +mavi +mavin +maximilio +maxsen +maxston +maxyn +mayel +mayhem +mayron +maysin +mcclane +mcguire +mekko +melody +merci +merrit +mesai +mesias +messyah +mete +miccah +micco +michaelanthony +mico +midian +mikhai +mikiyas +milio +millan +milliano +milon +minato +misbah +mishael +mixon +mohib +montell +montre +montrez +moriah +morocco +mosa +mouad +muaaz +muhannad +muhaymin +muiz +mukund +mumin +murdock +muse +mussa +mustafe +mustafo +mutaz +myaire +mykael +mykai +mylen +mylez +nachmen +nahim +nahyan +naiden +nain +naithan +nao +naol +naseir +nashawn +nasri +nathaneal +navian +naviel +navilan +nay +nayeem +nechemya +neekon +neerav +nehal +nehemia +neizan +nekoda +nello +nicolaus +nidal +nikshay +nilay +niran +nishal +noahh +noha +nolon +norlan +nunzio +nyal +nykeem +nyron +nyzaiah +obai +october +oghenetega +oluwakorede +omeed +onyxx +oreofeoluwa +orest +orry +orryn +osher +oso +osyris +owenn +owens +owsley +pacen +padraic +page +paiden +palash +pantelis +pape +pars +pate +patrik +penelope +penisimani +peretz +perrion +philipe +phillips +phinn +phu +pippin +pius +poe +prajwal +pranith +prayash +president +prish +quanah +quantrell +quaylon +que +quillen +quinnton +radford +radwan +raequan +rafferty +raidan +raidel +rajay +rajvir +rakai +rakshan +ramal +ramier +ramos +randen +ranson +rari +rawlings +rawson +rayaansh +rece +redick +reiden +reinhardt +reko +relic +render +rendon +reshawn +revyn +reznor +rhettley +rhian +rhyden +ridgely +riel +rihansh +riko +rilyn +ringo +rish +rithik +rithvin +ritvik +riyaz +rmoni +roanan +rob +rockie +roderic +roemello +rogen +romaine +rondale +ronish +rosalio +roshaun +rovanio +rowley +rownan +roxen +ruby +rudhran +rulon +rusten +rutilio +rutvik +ryeker +saarth +saban +sabas +sabastion +sabree +saer +saji +saket +saliou +salix +samatar +sammi +samraj +samridh +sarang +sargent +satchel +scarlett +seiji +selleck +sen +senai +seon +sequan +sergei +sevak +seydina +shabaz +shafer +shahem +shahir +shain +shammah +shanay +shankar +sharav +sharmarke +sharv +shaunak +shaydon +sheffield +shephard +sherif +shimshon +shivin +shloima +shoma +shrage +siddhan +sigifredo +sirjames +sirmichael +siva +sivansh +slader +slayde +slayder +smaran +solly +solstice +som +sonam +sosefo +sovann +sparrow +springer +spyridon +sriansh +srithan +stephone +sterlin +stran +suhail +suhas +sukhman +sunwoo +swae +syier +tafsir +tahjae +taiven +taivion +taji +tajiri +takeshi +talhah +talis +tannen +tannon +tarell +tarrance +tarrell +tau +tavarius +taw +tayceon +taye +tayron +teejay +teion +temesgen +temple +temur +teofilo +teoman +termaine +terrius +teshaun +tevan +tewodros +thadeus +thadius +thaiden +theos +theryn +thian +thorian +tianyi +tiegan +tighe +tin +tishaun +toluwanimi +topper +toriano +torry +toshiro +traevon +travone +trayshawn +trayvion +tremel +trequan +treshon +trevan +trevaughn +trevell +treven +trevonn +treygan +treyon +trishan +truxton +trygg +trygve +tulio +tully +tydarius +tyeson +tyga +tyjai +tykeem +tykel +tyland +tymier +tymon +tyrael +tyreece +tyrelle +ubaid +uchechukwu +uchenna +umut +upton +uryah +utsav +uwais +vahe +vahn +vaiden +vail +vale +vashawn +vaylen +vidhaan +virgilio +volvy +vontae +vu +vyaan +vyan +wahab +wahaj +wale +waymon +welden +wensley +westlee +westlyn +westynn +whitson +wildan +wilford +willoughby +win +windell +winson +worthy +wrenn +wulf +xabi +xabier +xandar +xavius +xayn +xsavior +xyan +xzavien +yabdiel +yabsera +yakub +yaqoub +yasha +yassiel +yavin +yenziel +yetzael +yeudiel +yezen +yicheng +yodahe +yovany +yuhan +yunay +yuniel +yunuen +yuval +yuvansh +yuze +zabriel +zackariya +zadien +zadquiel +zaeveon +zahan +zahar +zahier +zaiyden +zakariyya +zakarri +zakee +zalan +zamere +zaniel +zaqueo +zared +zarren +zaul +zavon +zayion +zaylor +zaylyn +zaymir +zayquan +zayvin +zebastian +zeid +zekarias +zeon +zeph +zeplyn +zerek +zhi +zhion +zhyair +zimri +zisha +zo +zohair +zolton +zubin +zulqarnain +zy +zyah +zygmunt +zyiere +zyrell +zyus +aabir +aagam +aakif +aakil +aalam +aanand +aaqil +aaris +aarvin +aavin +abanoub +abbot +abdihamid +abdirahim +abdirizaq +abdourahmane +abdulazeez +abdulelah +abdulghani +abduljabbar +abdulkareem +abdulmannan +abdulmohsen +abelino +abhijay +abhir +abhishek +abimelec +abniel +abraxas +abrham +abrum +acai +acelin +adar +adebowale +adidev +adisa +adolphus +adrijan +adwin +aedin +aengus +aeris +aesop +aethan +aevin +afif +agaran +ahanu +ahman +ahmeir +ahsaad +ahsir +aiiden +airon +aisaiah +aisea +aisen +aito +aivan +aiyan +ajavion +ajit +akhai +akhilles +akiel +akiem +akoi +akori +akshat +akshith +aland +alandis +alani +alastar +alaster +albaro +albi +albino +albus +aldrich +ale +aleckzander +alef +aleix +aleksej +aleric +alesandro +alexanderjames +alexx +alexy +alhassane +alice +alii +alius +alize +alma +alman +almanzo +alperen +alvi +alvie +alwaleed +amair +amante +amareon +amarr +amarrion +amayas +amazing +amirkhan +amitai +ammanuel +amran +amri +amro +anais +anan +anania +ancel +andretti +andreu +andri +andros +anees +anes +angadveer +angelgael +angell +anguel +aniko +anirvin +aniv +anjay +ankit +anna +anner +antjuan +antron +antwoine +antwuan +anzar +aprameya +arbaaz +arcus +ardan +ardin +argo +arieh +arihan +aristotelis +ariyaan +arnon +arpit +arshaun +arshia +arshith +arthas +arto +aryas +aryash +aryel +aryian +asahn +asan +aseer +asem +ashal +asheton +ashlan +ashok +ashtan +ashtynn +asif +asire +asrith +assan +assiah +atem +athreya +atreyus +atzel +aubin +audin +audy +aun +aurora +avantae +averick +averitt +avidan +aviram +avitaj +avondre +avrey +avroham +axelson +axen +axis +axsel +axston +axxton +ayaanreddy +aybel +ayhem +ayinde +aylin +aymer +ayobami +ayooluwa +ayumu +azani +azarel +azariel +azeil +azer +azier +azyan +baden +badri +bahram +bair +bale +baraa +barclay +barett +barnes +barrow +bartolome +bayani +beacon +beaudry +beckman +bedford +behnam +bekam +bellemy +benayah +benayas +benedikt +benham +benjamine +benjimen +benjimin +benjin +benzley +beorn +ber +berklee +berrett +berrick +bertram +bertrand +bevan +bharath +bhavin +bhodi +bigyan +bixby +blaike +blase +blayz +blessin +blesson +bliss +bodhisattva +bol +bond +bonner +boon +bowan +bowin +brahim +brahms +braidon +brancen +brandtley +branko +brawley +braydenn +braylee +braylenn +brecker +brelyn +brenley +brennox +brenson +brettley +brevan +brewster +breydan +brianna +brinley +brittan +brodin +brodix +bron +bronco +brycenn +brycyn +bryley +bryshaun +bryshere +brysonn +burkley +cadin +caedon +caeson +cainon +caire +calab +caledon +calev +caliel +calil +callie +camille +camon +canen +cannyn +capri +carbon +cari +cario +carleon +carmichael +carrson +cashion +casimiro +casin +casius +casmir +caspin +cassanova +cassel +cassien +castulo +cavon +caydren +caydyn +caylem +caz +celio +cem +chalil +chamar +chandlar +chanler +channer +chaos +chas +chayim +chaytan +chelsea +chevi +chicago +chidera +chigozie +chimdiebube +chinemelum +chol +chosyn +chozyn +chriss +christoper +churchill +cielo +cinch +cinque +cjay +clayten +cleon +clutch +cobee +cobin +cobra +codah +colesyn +colman +conagher +coner +constantinos +cope +cordale +cordarious +corday +corde +coreyon +corrie +coryion +costa +covan +covington +coyt +crusoe +cub +cynsere +daaron +daedric +daelen +daeshaun +daetyn +daimion +daion +daisean +daishon +daiveon +daking +dakodah +dalan +dalbert +daleon +dalis +daly +daman +damarie +damarrion +damein +damel +damerion +damori +daneil +daniell +daniels +dannon +danzig +dao +daran +dareck +dareon +dariush +darlyn +darrious +darvell +daryll +dashell +dashton +dasiah +davarian +davarious +daveed +davell +davie +davlat +davone +daycen +daylynn +daymir +dayren +dayten +deane +deantae +deavion +decorian +dedan +deeric +deiren +dejohn +dekai +deke +delray +delshon +demaje +demba +demere +demondre +demone +demoney +demontay +denario +deniel +denys +dequarius +deriel +derreck +derren +derrian +destine +detrick +deundre +devondre +devone +deyaa +deybi +deymar +dezman +dezmund +dhanush +diaan +diamonte +dierre +dionta +diquan +divith +divyan +divyansh +diyaan +django +dmarco +dmarcus +dmere +dmytro +domanick +domitri +doni +donnovan +dontarius +doren +dorsey +doruk +draden +drey +dreylen +drish +dristan +druv +dune +dupree +durant +dutton +dyan +dyer +eagle +east +eathon +eban +ebon +ebraheem +edem +edge +eduin +eiland +ejaz +ekrem +eldrick +eleanor +eleazer +eleuterio +elex +eliano +eliasar +elii +elisandro +elisey +elishah +elishua +elison +elissandro +eliza +eljay +ellwood +elmir +elston +elye +elysha +emanual +emanuele +emilia +emmery +emmiliano +emmytt +emris +endrick +eneas +enosh +enric +enrrique +erhan +ericksen +erim +erish +ernst +errion +erving +eryx +esgar +eshawn +esher +esjay +esmael +esrom +estefan +estephan +esteven +ether +eton +etzio +eulises +euriah +everick +exander +ezaiah +eze +ezekiell +ezell +ezeqiel +eziel +eziquiel +fabiano +fabyan +fadil +faiyaz +faizon +fanuel +faraja +farhaan +farhad +farooq +farouq +farron +fawwaz +fawzan +fedor +fenn +fenrir +feroz +fielder +filipp +finnik +fiyinfoluwa +fode +folajimi +frandy +franko +froylan +fynnegan +gabrael +gabreil +gakai +garet +garrhett +garron +gaurav +gavon +gavynn +gaylon +gebriel +geddy +gedeon +genji +geoni +georgi +georgy +geovannie +geralt +gerber +geriel +germaine +gerron +gessiah +giddeon +gilson +giorgi +givanni +glauk +glavine +godswill +goodness +gorden +gotti +graylin +graylon +graysan +great +greggory +greylin +gunnison +gurekam +gurmehar +haaken +hadid +hadrien +haedyn +haigen +hairo +haize +hajoon +hakiem +haleem +halid +hamlet +hamzeh +hance +hanief +hanish +hannah +hannan +hannon +hanz +haoyu +happy +harison +harjot +harker +harsha +harshil +hartaj +hasen +haskell +hassaan +hatem +havier +havik +haygan +haysten +haythem +hayu +hayyan +helder +hendry +heng +henoch +henos +hernando +hiatt +hilary +hinckley +hines +hixon +hongyi +honour +hopper +horizon +hoss +hossam +hossein +hrehaan +hrithik +hser +hud +hudayfa +hudeyfa +hukam +humaid +humphrey +hung +huntyr +iaan +ibrahiim +ibukunoluwa +icker +iian +ikemsinachi +ikshan +ilaan +iliya +illidan +ilyaas +ilyass +ilyes +imar +imre +imronbek +innocent +inti +iraj +ireland +iretomiwa +irineo +iron +isaack +isau +ishir +isidor +islombek +ithiel +ivin +iwan +iyad +iyanu +izack +izriel +izyaan +jaaire +jabdiel +jabreel +jabryson +jaceson +jaciere +jackstin +jacxon +jadence +jader +jaedan +jaelynn +jaeshaun +jaethan +jafari +jahaire +jahaziah +jaheir +jahfari +jahkel +jahmar +jahmauri +jahongir +jahquan +jahvier +jahzion +jaiceion +jaicere +jaidence +jaier +jaimes +jaiquan +jais +jaivan +jaivyn +jaiyce +jaizion +jakarie +jakavion +jakaylen +jakoda +jakory +jakyri +jaleal +jaliel +jalynn +jamahl +jamair +jamarien +jamaurion +jamen +jami +jamiah +jamicheal +jamien +jamieon +jamol +jandel +jaqson +jaqua +jaquavis +jaquavius +jaquay +jaquell +jareem +jarif +jarin +jariyah +jasaad +jaseem +jaser +jasiir +jaskaran +jassim +jassir +jasyn +jatori +javarious +javeion +javiel +javis +javohir +javonn +javonnie +javyn +jaxxston +jaycier +jayd +jayesh +jayjuan +jaykub +jaymien +jayr +jayten +jayze +jb +jcion +jebidiah +jedadiah +jefe +jeiko +jeiren +jekai +jemal +jemere +jemir +jenner +jensiel +jentezen +jentzen +jeon +jephthah +jerard +jered +jerian +jermar +jermarcus +jermell +jerold +jerone +jerred +jerrel +jerremy +jerrico +jesiyah +jessee +jessiel +jevaun +jewel +jeycob +jeydon +jezekiel +jezrael +jhadiel +jiaqi +jibrael +jibri +jkai +jmari +joandy +joangel +jociah +joen +johaniel +johansel +johncarlo +johndaniel +johniel +johnothan +jokubas +jomei +jonahel +jordanny +jorgen +jorniel +josedavid +josedejesus +josephanthony +josiaah +josimar +jourden +jourdyn +jovaughn +joviah +jowel +jozyah +juanandres +jud +judiah +jujuan +julia +juliani +juliyan +jumari +junot +junyi +justan +jusuf +juvencio +jyree +jysiah +kaceson +kachiside +kaci +kadar +kadien +kadrien +kaenen +kahel +kahlan +kahmi +kaia +kaian +kaikane +kail +kailin +kainoah +kainyn +kairen +kaisei +kaleel +kaliel +kalifa +kaliko +kallel +kallin +kalven +kamello +kamere +kamronbek +kamsi +kandon +kaneki +kaos +kapone +karanveer +kardell +karel +karev +karlyle +karnell +karrson +kashad +kashaun +kashen +kashif +kasius +kassen +kastle +kaung +kaushik +kavien +kawaii +kawon +kayaan +kayd +kaydrian +kayla +kaylem +kaylib +kaymari +kayston +kayvan +kazden +kaze +kazimierz +kazmir +kdyn +keair +keani +keao +keaten +keegen +keelon +keeyan +keiren +keisean +keisen +keishawn +keisuke +keita +keiton +keiyon +kekai +kellar +kenderick +kendre +kener +kengo +kengston +kenith +kenn +kennen +kennet +kenroy +kentaro +kentrail +kentucky +keontay +kerrick +kes +keshan +kethan +kevari +keyansh +keyari +keymani +keyonte +khabir +khaison +khalan +khaleem +khalief +khaliel +khalifah +khalique +khameron +khannon +kharsyn +khenan +khiran +khobe +khorey +khushal +khyel +khyng +khyzir +kiai +kiaire +kiegan +kienan +kieon +kijon +kiliam +kimo +kindle +kindred +kingarthur +kingjudah +kinglsey +kingmessiah +kinkade +kinser +kiren +kiron +kirtan +klayden +klayten +klinton +knighten +knixon +knute +koan +koben +koffi +kohin +koleman +koleton +kollyn +kosisochukwu +kovan +kraven +kreek +kreighton +krishank +kristiano +kriston +kriv +krizal +kronos +kruse +kuhao +kullyn +kumayl +kutler +kvion +kweku +kyber +kyell +kyian +kyias +kyliam +kylie +kymarion +kyndal +kyndell +kyrae +kyreece +kyston +kysun +kyzere +kyzic +la +laban +labib +ladarian +ladell +laetyn +lafe +laim +laione +lakshya +lamberto +lamicheal +lamin +lancelot +landrum +landy +langley +lanston +laray +larue +lassana +latrelle +laurenzo +lavel +lavontay +lawayne +lawsyn +laydon +laykin +lealand +leandros +leeiam +leelen +leelynn +leeson +leevon +legen +legolas +lejin +lejuan +lenden +lenni +lennyx +lens +leonzo +leoric +leovardo +lesane +leum +leunam +levian +levie +levitt +levyn +liamm +liav +lincon +lionardo +livan +livio +liyam +loganjames +lono +loran +lorde +lorian +louay +louca +loyd +lual +lucero +luchiano +lucis +luisenrique +luismiguel +lukman +luna +luv +lynton +lyons +lyte +maadhav +maccabee +maciej +macks +maclaren +madeline +magdaleno +mahan +mahavir +mahilan +majeed +makaden +maksen +makson +malacki +malakiah +mallik +malo +malykai +mamoudou +manish +mann +manvith +marcelis +marcellino +markas +marlan +marquavius +marquay +martavion +martine +maru +marvyn +masaki +maseo +mate +matej +mateja +matia +matisyahu +matrim +mats +matteus +matty +maurilio +maurion +maxden +maxel +maxie +maximous +maximum +maxmilian +maxxwell +mayceon +mayes +mayukh +maziah +maziar +mccall +mclaren +mehar +mehul +meison +meko +melakhi +melik +melquisedec +memphys +merari +meryk +messian +mesziah +metin +meyers +mher +michaiah +michail +michale +mihail +miken +mikyng +mila +moaaz +moaz +moeez +mohamadou +mohammadomar +mohith +moiz +mokshagna +momen +monta +montarius +monterio +montie +morgen +morireoluwa +mosawer +mosese +moti +mouhamad +mowgli +moyses +mucaad +mucad +mudasir +muhammadibrahim +muhammadmustafa +musiq +muzzammil +mykhail +mykol +myzell +nacari +nace +naftuly +nahir +nahome +nahun +nahzier +naiel +najeeb +nakari +nakoah +nang +nasi +nasr +natanel +natanem +nathael +naven +navraj +naylan +nayson +nazaiah +nazair +nazariy +nazeem +nazhir +nekhi +newell +nial +nicasio +niccolas +nicholson +nickan +nicolae +nicolau +nihar +nik +nikith +nirvik +nishad +nishawn +nitai +nixen +niyan +noelan +noelle +nore +nouh +nouri +numair +nycere +nyklaus +oakleigh +oaklynd +obeth +obrian +obryan +oconner +octaviano +odie +odynn +oghenebrume +ohene +olando +olayinka +oleksandr +olijah +ollyver +olman +olujimi +oluwadamilola +oluwalonimi +oluwamayowa +oluwatise +omarie +omarii +omeir +onir +orestes +orvin +osaze +osean +osei +ossian +ozell +palvit +panav +parke +parson +parx +pavlos +paycen +payten +perfect +petr +peyson +phenyx +philips +philopateer +pier +piercen +pinny +placido +pollux +polo +power +prabhjot +praneeth +pranil +pransh +pratt +prayaan +precieux +precise +prevail +prime +princeten +priyan +qamar +qi +quadre +quantavius +quavious +quency +quince +qwest +rachel +rachid +racyn +radek +radvin +rafid +rahiim +rahki +rainen +rakari +rally +ramar +ranvir +rawad +rawlin +rawling +raxton +rayleigh +raymier +raynav +rehansh +rehoboth +reik +renard +renardo +rett +reydan +reyn +reyner +rezwan +rhyis +rhyon +rhyse +rhyson +richland +richy +ridger +rin +rishit +rishith +rishon +riyon +rjay +rmon +roam +roanin +roary +robben +rocklan +rodderick +rohail +rohi +rohith +roko +roldan +rolin +roma +romanus +romelle +romere +romie +romil +romney +romy +ronon +rontrell +rooke +rorey +rosbel +rosen +roshane +royden +rron +rueger +ryad +ryansh +rydell +ryell +ryer +ryerson +rylei +ryus +saafir +saahas +saajan +saam +saavan +sadi +sador +safan +sahej +saier +saivion +salesi +samaksh +saman +samba +samiul +samrudh +samvel +samyak +samyog +sang +sanji +sankalp +sarfaraz +sarhan +sasuke +satori +saunders +savannah +saviel +savino +savio +sayeed +sayge +sayveon +schyler +scooter +scot +sebastiann +selik +sellers +sem +semere +seojun +serhan +seti +severide +severo +sevrin +shabazz +shafay +shahbaz +shahzaib +shalin +shameek +shamere +shamshon +shanav +shanmukh +sharaf +shavar +shayde +shelden +shemuel +sher +sherrod +shiah +shin +shiro +shishir +shmaya +shreyash +sidhan +sier +siere +siler +siosaia +sircarter +sircharles +sirlegend +siyer +snayder +snow +solar +solaris +solo +solomone +southern +spurgeon +srihari +staley +stanlee +starlyn +staten +stavro +stephane +stetsyn +stevin +stig +stinson +straton +sujay +sulaymaan +sunni +suryansh +sushant +sutherland +suvan +svojas +swade +swar +swaraj +syeir +sylys +syr +syren +taeshawn +tahmeed +tailer +taimoor +taiyari +takashi +tamarcus +tamer +tamerlan +tamjid +tamryn +taniela +tanis +tanmay +tarren +tarron +tarzan +tashi +tavius +tay +tayyab +taz +teghan +tel +tellis +temiloluwa +temir +temitope +temujin +teniola +tenley +tenneson +tenuun +terren +terrez +tevion +tevyn +thade +thaxton +theadore +theoren +thibault +thierno +thoreau +tifeoluwa +tikhon +till +tilman +timir +timofei +timon +tion +tiras +tirrell +tiyon +toan +tobiloba +tokyo +tolliver +tomi +torres +tracey +traeton +trail +tralyn +tramell +tramon +trason +traven +travez +travin +travonn +travonte +traylon +trayven +trejon +trentin +trestin +treyce +treyven +treyvonn +tripton +tristain +truthe +trystyn +tudor +turhan +tyde +tyhir +tyjae +tylann +tylenn +tylyn +tylynn +tymari +tynan +tyner +tyrae +tyrann +tyten +tywaun +ulysse +universe +vahan +vanson +vantha +vasco +vedaant +vedad +venancio +versace +viaansh +victorino +vidur +vigo +vihas +vincen +vinn +violet +vishan +vishant +vision +vitor +vivaansh +vivin +volvi +vontrell +vyktor +waverly +weber +wellesley +wendel +wentz +westbrook +wills +wilver +wizdom +wojciech +woodley +woojin +wryder +wylden +wylen +wyman +xachary +xan +xaylen +xiomar +xoel +xolani +xylus +yadin +yaheem +yamari +yamato +yameen +yanciel +yangel +yannai +yansel +yanziel +yasar +yasseen +yavier +yavuz +yaxel +yayden +yeab +yeferson +yefim +yehya +yekusiel +yeltsin +yeshayah +yihao +yitzhak +yobani +yohaan +yohandry +yohanes +yonnis +yony +yordani +yordy +yoshio +yoshiyah +yosiyah +yosmar +yosniel +ysidro +ysmael +ysrael +yubin +yugo +yuji +yul +zaaki +zaavan +zaccari +zachari +zacharian +zachry +zaeed +zahavi +zaheir +zahyan +zaidenn +zaier +zailyn +zaion +zakery +zakobe +zakyi +zalik +zam +zamarrion +zameir +zan +zandon +zandyn +zanoah +zathan +zaviel +zavin +zaye +zaytoven +zee +zeev +zeferino +zell +zenas +zerrick +zeshan +zevan +zhander +zhen +zheng +zhiheng +ziaan +zichen +zidon +zien +zier +zierre +zihir +zim +zin +zishe +zmari +zoel +zola +zuber +zubeyr +zyell +zyheem +zykeem +zylas +zyran +zyrie +zyron +zzyzx diff --git a/data/01/SOURCES.md b/data/pandas/01/SOURCES.md similarity index 100% rename from data/01/SOURCES.md rename to data/pandas/01/SOURCES.md diff --git a/data/01/earthquakes.csv b/data/pandas/01/earthquakes.csv similarity index 100% rename from data/01/earthquakes.csv rename to data/pandas/01/earthquakes.csv diff --git a/data/01/example_data.csv b/data/pandas/01/example_data.csv similarity index 100% rename from data/01/example_data.csv rename to data/pandas/01/example_data.csv diff --git a/data/01/parsed.csv b/data/pandas/01/parsed.csv similarity index 100% rename from data/01/parsed.csv rename to data/pandas/01/parsed.csv diff --git a/data/01/quakes.db b/data/pandas/01/quakes.db similarity index 100% rename from data/01/quakes.db rename to data/pandas/01/quakes.db diff --git a/data/01/tsunamis.csv b/data/pandas/01/tsunamis.csv similarity index 100% rename from data/01/tsunamis.csv rename to data/pandas/01/tsunamis.csv diff --git a/data/02/SOURCES.md b/data/pandas/02/SOURCES.md similarity index 100% rename from data/02/SOURCES.md rename to data/pandas/02/SOURCES.md diff --git a/data/02/bitcoin.csv b/data/pandas/02/bitcoin.csv similarity index 100% rename from data/02/bitcoin.csv rename to data/pandas/02/bitcoin.csv diff --git a/data/02/dirty_data.csv b/data/pandas/02/dirty_data.csv similarity index 100% rename from data/02/dirty_data.csv rename to data/pandas/02/dirty_data.csv diff --git a/data/02/exercises/aapl.csv b/data/pandas/02/exercises/aapl.csv similarity index 100% rename from data/02/exercises/aapl.csv rename to data/pandas/02/exercises/aapl.csv diff --git a/data/02/exercises/amzn.csv b/data/pandas/02/exercises/amzn.csv similarity index 100% rename from data/02/exercises/amzn.csv rename to data/pandas/02/exercises/amzn.csv diff --git a/data/02/exercises/fb.csv b/data/pandas/02/exercises/fb.csv similarity index 100% rename from data/02/exercises/fb.csv rename to data/pandas/02/exercises/fb.csv diff --git a/data/02/exercises/goog.csv b/data/pandas/02/exercises/goog.csv similarity index 100% rename from data/02/exercises/goog.csv rename to data/pandas/02/exercises/goog.csv diff --git a/data/02/exercises/nflx.csv b/data/pandas/02/exercises/nflx.csv similarity index 100% rename from data/02/exercises/nflx.csv rename to data/pandas/02/exercises/nflx.csv diff --git a/data/02/long_data.csv b/data/pandas/02/long_data.csv similarity index 100% rename from data/02/long_data.csv rename to data/pandas/02/long_data.csv diff --git a/data/02/nyc_temperatures.csv b/data/pandas/02/nyc_temperatures.csv similarity index 100% rename from data/02/nyc_temperatures.csv rename to data/pandas/02/nyc_temperatures.csv diff --git a/data/02/sp500.csv b/data/pandas/02/sp500.csv similarity index 100% rename from data/02/sp500.csv rename to data/pandas/02/sp500.csv diff --git a/data/02/wide_data.csv b/data/pandas/02/wide_data.csv similarity index 100% rename from data/02/wide_data.csv rename to data/pandas/02/wide_data.csv diff --git a/data/03/SOURCES.md b/data/pandas/03/SOURCES.md similarity index 100% rename from data/03/SOURCES.md rename to data/pandas/03/SOURCES.md diff --git a/data/03/dirty_data.csv b/data/pandas/03/dirty_data.csv similarity index 100% rename from data/03/dirty_data.csv rename to data/pandas/03/dirty_data.csv diff --git a/data/03/exercises/covid19_cases.csv b/data/pandas/03/exercises/covid19_cases.csv similarity index 100% rename from data/03/exercises/covid19_cases.csv rename to data/pandas/03/exercises/covid19_cases.csv diff --git a/data/03/exercises/earthquakes.csv b/data/pandas/03/exercises/earthquakes.csv similarity index 100% rename from data/03/exercises/earthquakes.csv rename to data/pandas/03/exercises/earthquakes.csv diff --git a/data/03/exercises/faang.csv b/data/pandas/03/exercises/faang.csv similarity index 100% rename from data/03/exercises/faang.csv rename to data/pandas/03/exercises/faang.csv diff --git a/data/03/fb_2018.csv b/data/pandas/03/fb_2018.csv similarity index 100% rename from data/03/fb_2018.csv rename to data/pandas/03/fb_2018.csv diff --git a/data/03/fb_week_of_may_20_per_minute.csv b/data/pandas/03/fb_week_of_may_20_per_minute.csv similarity index 100% rename from data/03/fb_week_of_may_20_per_minute.csv rename to data/pandas/03/fb_week_of_may_20_per_minute.csv diff --git a/data/03/melted_stock_data.csv b/data/pandas/03/melted_stock_data.csv similarity index 100% rename from data/03/melted_stock_data.csv rename to data/pandas/03/melted_stock_data.csv diff --git a/data/03/nyc_weather_2018.csv b/data/pandas/03/nyc_weather_2018.csv similarity index 100% rename from data/03/nyc_weather_2018.csv rename to data/pandas/03/nyc_weather_2018.csv diff --git a/data/03/stocks.db b/data/pandas/03/stocks.db similarity index 100% rename from data/03/stocks.db rename to data/pandas/03/stocks.db diff --git a/data/03/weather.db b/data/pandas/03/weather.db similarity index 100% rename from data/03/weather.db rename to data/pandas/03/weather.db diff --git a/data/03/weather_by_station.csv b/data/pandas/03/weather_by_station.csv similarity index 100% rename from data/03/weather_by_station.csv rename to data/pandas/03/weather_by_station.csv diff --git a/data/03/weather_stations.csv b/data/pandas/03/weather_stations.csv similarity index 100% rename from data/03/weather_stations.csv rename to data/pandas/03/weather_stations.csv diff --git a/extra/32_language_modeling_1_solutions.ipynb b/extra/32_language_modeling_1_solutions.ipynb new file mode 100644 index 00000000..6c9349fc --- /dev/null +++ b/extra/32_language_modeling_1_solutions.ipynb @@ -0,0 +1,1211 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Language Modeling With PyTorch\n", + "\n", + "## Part 1 – Solutions\n", + "\n", + "This notebook is a companion of [Language Modeling with PyTorch – Part 1](./32_language_modeling_1.ipynb) notebook, and contains *proposed* solutions to the exercises." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import torch\n", + "import torch.nn.functional as F" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Build a Trigram model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A trigram language model predicts the next character based on the previous **two** characters, unlike a bigram model which only uses one previous character. This additional context should help make more accurate predictions.\n", + "\n", + "In this exercise, we will:\n", + "1. Train a trigram language model that takes **two** characters as input to predict the 3rd one\n", + "2. Implement this using a neural network approach\n", + "3. Evaluate the model's performance using loss metrics\n", + "4. Compare its performance to the bigram model\n", + "\n", + "**Key Questions to Address:**\n", + "1. Did the trigram model improve over the bigram model?\n", + "2. If yes, by what percentage did it improve?\n", + "\n", + "**Intuition:** By considering two previous characters instead of just one, a trigram model captures more context and patterns in the language, which should lead to better predictions and lower loss compared to a bigram model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Set training device\n", + "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", + "\n", + "# Load dataset\n", + "words = open(\"data/lm/names.txt\").read().splitlines()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Understanding Trigrams\n", + "\n", + "Each trigram consists of a sequence of $2$ input characters, followed by $1$ expected output character.\n", + "The model's task is to predict the output character given the two input characters.\n", + "\n", + "To generate these trigrams from our text data, we can extend the sliding-window approach we used for bigrams:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for w in words[:1]:\n", + " chs = [\".\"] + list(w) + [\".\"]\n", + " for ch1, ch2, ch3 in zip(chs, chs[1:], chs[2:]): # Three char 'sliding-window'\n", + " print(ch1, ch2, ch3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Important Implementation Detail:**\n", + "\n", + "Notice how our first trigram is of shape `('.', 'e', 'm')`, and not `('.', '.', 'e')`. This is a deliberate choice.\n", + "\n", + "While we could modify the code to produce `('.', '.', 'e')` with `chs = ['.', '.'] + list(w) + ['.', '.']`, having the first two characters as special tokens (both '.') wouldn't provide meaningful context for predicting the next character. Special tokens at the beginning don't contain real linguistic patterns, so starting with `('.')` followed by the first actual character gives our model more useful information.\n", + "\n", + "This approach helps avoid confusing the model and reduces wasted computation on inputs that don't reflect natural language patterns." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Visualizing Trigram Occurrences\n", + "\n", + "To properly represent and visualize our trigrams, we need to account for all possible character combinations:\n", + "- We have $26$ letters from the English alphabet\n", + "- **+1** special character ('.') for word boundaries\n", + "\n", + "This gives us a 3D array of dimensions $27\\times 27\\times 27$ to store all possible trigram combinations:\n", + "- First dimension: the first character in the trigram\n", + "- Second dimension: the second character in the trigram\n", + "- Third dimension: the third (predicted) character\n", + "\n", + "Each cell in this 3D array will store the count of how many times that specific trigram appears in our training data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "N = torch.zeros((27, 27, 27), dtype=torch.int32)\n", + "\n", + "chars = sorted(set(\"\".join(words)))\n", + "stoi = {s: i + 1 for i, s in enumerate(chars)}\n", + "stoi[\".\"] = 0 # Special token has position zero\n", + "itos = {i: s for s, i in stoi.items()}\n", + "\n", + "for w in words:\n", + " chs = [\".\"] + list(w) + [\".\"]\n", + " for ch1, ch2, ch3 in zip(chs, chs[1:], chs[2:]): # Three token 'sliding-window'\n", + " N[stoi[ch1], stoi[ch2], stoi[ch3]] += 1 # Increment cell in 3D tensor by 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's create a more informative visualization of our trigram counts.\n", + "We'll visualize the most frequent first characters (up to 3) rather than just the first two" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Find the first characters with the most occurrences\n", + "first_char_counts = N.sum(dim=(1, 2))\n", + "top_k_indices = torch.topk(first_char_counts, k=3).indices.tolist()\n", + "\n", + "# Add special character (.) to always show regardless of frequency\n", + "if 0 not in top_k_indices:\n", + " top_k_indices = [0] + top_k_indices[:2] # Ensure we include the special token\n", + "\n", + "for k in top_k_indices:\n", + " # Only show non-zero entries for clarity\n", + " nonzero_mask = N[k] > 0\n", + "\n", + " if nonzero_mask.sum() > 0: # Skip empty slices\n", + " plt.figure(figsize=(16, 14))\n", + "\n", + " # Use a perceptually uniform colormap with better contrast\n", + " plt.imshow(\n", + " N[k],\n", + " cmap=\"viridis\",\n", + " norm=plt.matplotlib.colors.LogNorm(vmin=0.1, vmax=N[k].max()),\n", + " )\n", + "\n", + " plt.colorbar(label=\"Frequency (log scale)\")\n", + " plt.title(f\"Trigram Heatmap for First Character: '{itos[k]}'\", fontsize=16)\n", + " plt.xlabel(\"Third Character (Predicted)\", fontsize=12)\n", + " plt.ylabel(\"Second Character\", fontsize=12)\n", + "\n", + " # Add labels showing both the trigram and its count where non-zero\n", + " for i in range(27):\n", + " for j in range(27):\n", + " if N[k, i, j] > 0: # Only label non-zero entries\n", + " count = N[k, i, j].item()\n", + " chstr = itos[k] + itos[i] + itos[j]\n", + "\n", + " # Color text based on background darkness for better readability\n", + " # White text on dark backgrounds, black text on light backgrounds\n", + " norm_val = plt.matplotlib.colors.LogNorm()(count)\n", + " # Use normalized value - lower values are darker in viridis colormap\n", + " # Simple threshold - values below 0.5 get white text, others get black\n", + " text_color = \"white\" if norm_val < 0.5 else \"black\"\n", + "\n", + " plt.text(\n", + " j,\n", + " i,\n", + " chstr,\n", + " ha=\"center\",\n", + " va=\"bottom\",\n", + " color=text_color,\n", + " fontsize=8,\n", + " fontweight=\"bold\",\n", + " )\n", + " plt.text(\n", + " j, i, count, ha=\"center\", va=\"top\", color=text_color, fontsize=8\n", + " )\n", + "\n", + " # Add grid lines for better readability\n", + " plt.grid(False)\n", + " plt.tight_layout()\n", + " plt.show()\n", + "\n", + " # Print summary stats for this first character\n", + " total_count = N[k].sum().item()\n", + " unique_trigrams = (N[k] > 0).sum().item()\n", + " print(\n", + " f\"First char '{itos[k]}': {unique_trigrams} unique trigrams out of {total_count} total occurrences\"\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**How to Interpret the Trigram Heatmaps?**\n", + "\n", + "The heatmaps above visualize the frequency of trigram patterns in our dataset:\n", + "\n", + "- **X-axis (horizontal)**: The third character in the trigram (the character we're trying to predict)\n", + "- **Y-axis (vertical)**: The second character in the trigram\n", + "- **Title**: Shows the first character, which is fixed for each heatmap\n", + "\n", + "**Color intensity**: Represents frequency on a logarithmic scale - brighter/more intense colors indicate trigrams that appear more frequently in our dataset.\n", + "\n", + "**Labels on cells**: Each cell shows:\n", + "- The full trigram (at the bottom of the cell)\n", + "- The count of occurrences (at the top of the cell)\n", + "\n", + "**What to look for**:\n", + "- Bright cells indicate common character combinations\n", + "- Dark/empty areas show rare or non-existent combinations\n", + "- Patterns along rows/columns reveal which character sequences occur more frequently in names\n", + "\n", + "These visualizations help us understand the statistical patterns our trigram model will learn to predict." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Neural Network Implementation of the Trigram Model\n", + "\n", + "Now let's implement the neural network version of our trigram model. Unlike the bigram model that handled a single input character, the key challenge here is processing two input characters simultaneously to predict the third.\n", + "\n", + "The following code prepares our training data for the neural network by:\n", + "1. Converting each word into a sequence of trigrams\n", + "2. Extracting input pairs (first two characters) and output targets (third character)\n", + "3. Converting these into tensor representations the network can process" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create training set of all trigrams\n", + "xs, ys = [], []\n", + "\n", + "for w in words:\n", + " chs = [\".\"] + list(w) + [\".\"]\n", + " for ch1, ch2, ch3 in zip(chs, chs[1:], chs[2:]):\n", + " xs.append([stoi[ch1], stoi[ch2]])\n", + " ys.append(stoi[ch3])\n", + "\n", + "xs, ys = torch.tensor(xs), torch.tensor(ys) # [196113, 2], [196113]\n", + "num_x, num_y = xs.nelement() // 2, ys.nelement()\n", + "print(\"Number of examples\\nx:\", num_x, \"\\ny:\", num_y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Character Representation for the Neural Network\n", + "\n", + "For our neural network to process characters, we need to convert them to numerical representations:\n", + "\n", + "- Each character is represented by a $27$-dimensional one-hot vector (one position for each of our 26 letters plus 1 special character)\n", + "- For a trigram, we need to concatenate the one-hot vectors of the two input characters\n", + "- This creates a $27+27=54$-dimensional input vector for each trigram\n", + "\n", + "You can conceptualize this 54-dimensional vector as a \"two-hot\" vector, where exactly two of the 54 dimensions are set to $1$ (one for each input character) and the rest are $0$.\n", + "\n", + "Next, we'll initialize our neural network weights and prepare for training:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "g = torch.Generator(device=device).manual_seed(2147483647)\n", + "\n", + "# Random column tensor of (27+27)x27 numbers (requires_grad=True for autograd)\n", + "W = torch.randn((27 + 27, 27), device=device, generator=g, requires_grad=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Training cycles, using the entire dataset over 200 Epochs, like the bigram model\n", + "for k in range(200):\n", + " # Forward pass\n", + " # One-hot encoding, [196113, 2, 27]\n", + " xenc = F.one_hot(xs, num_classes=27).float().to(device)\n", + " xenc = xenc.view(num_x, -1) # concatenate the one-hot vectors, [196113, 54]\n", + " logits = xenc @ W # logits, different word for log-counts\n", + " counts = logits.exp() # 'fake counts', kinda like in the N matrix of bigram\n", + "\n", + " # Normal distribution probabilities (this is y_pred)\n", + " probs = counts / counts.sum(1, keepdims=True)\n", + " loss = -probs[torch.arange(num_x), ys].log().mean() + 0.01 * (W**2).mean()\n", + " print(f\"Loss @ iteration {k + 1}: {loss}\")\n", + "\n", + " # Backward pass\n", + " W.grad = None # Make sure all gradients are reset\n", + " loss.backward() # Torch kept track of what this variable is, kinda cool\n", + "\n", + " # Weight update\n", + " W.data += -50 * W.grad" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Results and Comparison\n", + "\n", + "**Performance Evaluation:**\n", + "\n", + "- The bigram model produced a final loss of $2.462393045425415$\n", + "- Our trigram model achieves a loss of $2.259373664855957$\n", + "- This represents an $8.24\\%$ improvement in prediction accuracy\n", + "\n", + "**Conclusion:** As we hypothesized, providing the model with two characters of context (trigram) instead of just one (bigram) allows it to better capture language patterns and make more accurate predictions. This demonstrates how increasing the context window in language models leads to improved performance, a principle that extends to modern large language models which use much larger context windows." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Split the dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In real-world machine learning applications, we need to evaluate how well our models generalize to unseen data. To do this, we typically split our dataset into three parts:\n", + "\n", + "- **Training set (80%)**: Used to train the model parameters\n", + "- **Validation/Dev set (10%)**: Used for hyperparameter tuning and model selection\n", + "- **Test set (10%)**: Used only for final evaluation to estimate real-world performance\n", + "\n", + "In this exercise, we will:\n", + "1. Randomly split our dataset following the 80:10:10 ratio\n", + "2. Train our language models (bigram and trigram) **only** on the training set\n", + "3. Evaluate performance on both validation and test sets\n", + "4. Observe patterns in generalization performance\n", + "\n", + "**Key Questions:**\n", + "- How do the models perform on unseen data compared to training data?\n", + "- Which model generalizes better: bigram or trigram?\n", + "- What does this tell us about the tradeoff between model complexity and generalization?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "g = torch.Generator(device=device).manual_seed(2147483647)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Bigram model baseline\n", + "\n", + "Let's start by establishing a baseline using our familiar bigram model. This simpler model will help us understand:\n", + "\n", + "1. How well a basic model can generalize to new data\n", + "2. Provide a comparison point for our more complex trigram model\n", + "\n", + "We'll reuse the same architecture as before, but now restrict training to just the training portion of our data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create set of all *bigrams*\n", + "xs, ys = [], []\n", + "\n", + "for w in words:\n", + " chs = [\".\"] + list(w) + [\".\"]\n", + " for ch1, ch2 in zip(chs, chs[1:]):\n", + " xs.append(stoi[ch1])\n", + " ys.append(stoi[ch2])\n", + "\n", + "xs, ys = torch.tensor(xs), torch.tensor(ys) # [196113], [196113]\n", + "num_x, num_y = xs.nelement(), ys.nelement()\n", + "\n", + "# Shuffle/Permute the dataset, keeping pairs in sync\n", + "perm = torch.randperm(num_x)\n", + "xs, ys = xs[perm], ys[perm]\n", + "\n", + "# Split 80:10:10 for train:valid:test\n", + "xs_bi_train, xs_bi_valid, xs_bi_test = (\n", + " xs[: int(num_x * 0.8)],\n", + " xs[int(num_x * 0.8) : int(num_x * 0.9)],\n", + " xs[int(num_x * 0.9) :],\n", + ")\n", + "ys_bi_train, ys_bi_valid, ys_bi_test = (\n", + " ys[: int(num_x * 0.8)],\n", + " ys[int(num_x * 0.8) : int(num_x * 0.9)],\n", + " ys[int(num_x * 0.9) :],\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "W = torch.randn((27, 27), device=device, generator=g, requires_grad=True)\n", + "\n", + "# Training cycles, using the entire dataset -> 200 Epochs\n", + "for k in range(200):\n", + " # Forward pass\n", + " xenc = (\n", + " F.one_hot(xs_bi_train, num_classes=27).float().to(device)\n", + " ) # one-hot encode the names\n", + " logits = xenc @ W # logits, different word for log-counts\n", + " counts = logits.exp() # 'fake counts', kinda like in the N matrix of bigram\n", + " probs = counts / counts.sum(\n", + " 1, keepdims=True\n", + " ) # Normal distribution probabilities (this is y_pred)\n", + " loss = (\n", + " -probs[torch.arange(len(probs)), ys_bi_train].log().mean()\n", + " + 0.01 * (W**2).mean()\n", + " )\n", + " print(f\"Loss @ iteration {k + 1}: {loss}\")\n", + " # Backward pass\n", + " W.grad = None # Make sure all gradients are reset\n", + " loss.backward() # Torch kept track of what this variable is, kinda cool\n", + " # Weight update\n", + " W.data += -50 * W.grad" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Evaluating Bigram Training Performance\n", + "\n", + "The bigram model trained on our 80% training set reaches a final loss of $2.4826600551605225$.\n", + "\n", + "**Note**: This is slightly worse than when we trained on the full dataset (which is expected). The model has access to less information when trained on only 80% of the data.\n", + "\n", + "However, this approach offers a crucial advantage: we can now measure how well our model generalizes to unseen examples using our held-out validation and test sets. This will tell us whether our model is:\n", + "\n", + "- **Underfitting**: Performing poorly on both training and validation sets\n", + "- **Overfitting**: Performing well on training but poorly on validation\n", + "- **Generalizing well**: Performing similarly on both training and validation/test sets" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Validation Loss\n", + "with torch.no_grad():\n", + " xenc = (\n", + " F.one_hot(xs_bi_valid, num_classes=27).float().to(device)\n", + " ) # one-hot encode the names\n", + " logits = xenc @ W # logits, different word for log-counts\n", + " counts = logits.exp() # 'fake counts', kinda like in the N matrix of bigram\n", + " probs = counts / counts.sum(\n", + " 1, keepdims=True\n", + " ) # Normal distribution probabilities (this is y_pred)\n", + " loss = (\n", + " -probs[torch.arange(len(probs)), ys_bi_valid].log().mean()\n", + " + 0.01 * (W**2).mean()\n", + " )\n", + "print(f\"Validation Loss: {loss}\")\n", + "\n", + "# Test Loss\n", + "with torch.no_grad():\n", + " xenc = (\n", + " F.one_hot(xs_bi_test, num_classes=27).float().to(device)\n", + " ) # one-hot encode the names\n", + " logits = xenc @ W # logits, different word for log-counts\n", + " counts = logits.exp() # 'fake counts', kinda like in the N matrix of bigram\n", + " probs = counts / counts.sum(\n", + " 1, keepdims=True\n", + " ) # Normal distribution probabilities (this is y_pred)\n", + " loss = (\n", + " -probs[torch.arange(len(probs)), ys_bi_test].log().mean() + 0.01 * (W**2).mean()\n", + " )\n", + "print(f\"Test Loss:\\t {loss}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Bigram Model Generalization Analysis\n", + "\n", + "**Key Observation**: The train, validation, and test losses are all very close to each other!\n", + "\n", + "This indicates that our bigram model generalizes well to unseen data. When a model performs similarly across all three data splits, it suggests that:\n", + "\n", + "1. The model has learned meaningful patterns rather than just memorizing the training data\n", + "2. The statistical patterns of character sequences in names are relatively consistent across our dataset\n", + "3. The bigram model's complexity level is appropriate for this particular task\n", + "\n", + "This good generalization makes sense intuitively - with only 27² = 729 possible bigrams, our model can easily encounter most meaningful character combinations during training, allowing it to handle similar patterns in the validation and test sets." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Compare the Bigram and Trigram Models\n", + "\n", + "Now that we've established our bigram baseline, let's implement and evaluate our trigram model on the same data splits. This comparison will help us understand the tradeoffs between:\n", + "\n", + "1. **Model complexity**: Trigrams capture more context but have more parameters\n", + "2. **Generalization ability**: How well each model performs on unseen data\n", + "3. **Sample efficiency**: How effectively each model learns from limited training data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Predicting Trigram Generalization Performance\n", + "\n", + "**Hypothesis:** Will the trigram model generalize as well as the bigram model? Let's analyze this question before seeing the results.\n", + "\n", + "**Mathematical perspective**:\n", + "- A trigram model must learn patterns for $27^3 = 19,683$ possible character combinations\n", + "- A bigram model only needs to learn $27^2 = 729$ possible combinations\n", + "- That's a 27x increase in the possible patterns to learn!\n", + "\n", + "**Model complexity implications**:\n", + "- The trigram model's weight matrix `W` has dimensions $(27+27) \\times 27 = 54 \\times 27 = 1,458$ parameters\n", + "- This larger parameter space creates a higher-dimensional optimization problem\n", + "- While the model can theoretically capture more nuanced patterns in names, it needs more data to do so reliably\n", + "\n", + "**Expected generalization behavior**:\n", + "- Due to this increased complexity, the trigram model will likely show some gap between training and validation/test performance\n", + "- We expect both validation and test losses to be higher than the training loss\n", + "- However, if the gap remains small, it would indicate that the additional complexity is justified by the improved modeling capacity" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create set of all *trigrams*\n", + "xs, ys = [], []\n", + "\n", + "for w in words:\n", + " chs = [\".\"] + list(w) + [\".\"]\n", + " for ch1, ch2, ch3 in zip(chs, chs[1:], chs[2:]):\n", + " xs.append([stoi[ch1], stoi[ch2]])\n", + " ys.append(stoi[ch3])\n", + "\n", + "xs, ys = torch.tensor(xs), torch.tensor(ys) # [196113, 2], [196113]\n", + "num_x, num_y = xs.nelement() // 2, ys.nelement()\n", + "\n", + "# Shuffle/Permute the dataset, keeping (x,y) pairs in sync\n", + "perm = torch.randperm(num_x)\n", + "xs, ys = xs[perm, :], ys[perm] # xs are shuffled along the zeroth dimension\n", + "\n", + "# Split 80:10:10 for train:valid:test\n", + "xs_tri_train, xs_tri_valid, xs_tri_test = (\n", + " xs[: int(num_x * 0.8), :],\n", + " xs[int(num_x * 0.8) : int(num_x * 0.9), :],\n", + " xs[int(num_x * 0.9) :, :],\n", + ")\n", + "ys_tri_train, ys_tri_valid, ys_tri_test = (\n", + " ys[: int(num_x * 0.8)],\n", + " ys[int(num_x * 0.8) : int(num_x * 0.9)],\n", + " ys[int(num_x * 0.9) :],\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "W = torch.randn(\n", + " (27 + 27, 27), device=device, generator=g, requires_grad=True\n", + ") # random column tensor of (27+27)x27 numbers (requires_grad=True for autograd)\n", + "\n", + "# Training cycles, using the entire dataset -> 200 Epochs, like the bigram model\n", + "d_size = xs_tri_train.shape[0]\n", + "for k in range(200):\n", + " # Forward pass\n", + " xenc = (\n", + " F.one_hot(xs_tri_train, num_classes=27).float().to(device)\n", + " ) # One-hot encoding, [196113, 2, 27]\n", + " xenc = xenc.view(d_size, -1) # concatenate the one-hot vectors, [196113, 54]\n", + " logits = xenc @ W # logits, different word for log-counts\n", + " counts = logits.exp() # 'fake counts', kinda like in the N matrix of bigram\n", + " probs = counts / counts.sum(\n", + " 1, keepdims=True\n", + " ) # Normal distribution probabilities (this is y_pred)\n", + " loss = (\n", + " -probs[torch.arange(d_size), ys_tri_train].log().mean() + 0.01 * (W**2).mean()\n", + " )\n", + " print(f\"Loss @ iteration {k + 1}: {loss}\")\n", + "\n", + " # Backward pass\n", + " W.grad = None # Make sure all gradients are reset\n", + " loss.backward() # Torch kept track of what this variable is, kinda cool\n", + "\n", + " # Weight update\n", + " W.data += -50 * W.grad" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Trigram Training Results\n", + "\n", + "The training loss of our trigram model trained on 80% of the data reaches $2.2590503692626953$, which is virtually identical to the loss we achieved when training on the full dataset ($2.259373664855957$).\n", + "\n", + "**Interesting observation**: Despite having access to 20% less data, the trigram model achieves essentially the same training performance. This suggests:\n", + "\n", + "1. The 80% training set still contains most of the important trigram patterns present in the full dataset\n", + "2. Our training process (200 epochs) is sufficient for the model to converge to a good solution\n", + "3. The reduced dataset size doesn't significantly impact the model's ability to learn the core patterns\n", + "\n", + "Now let's evaluate this model on our validation and test sets to see how well it generalizes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Validation Loss\n", + "d_size = xs_tri_valid.shape[0]\n", + "with torch.no_grad():\n", + " xenc = (\n", + " F.one_hot(xs_tri_valid, num_classes=27).float().to(device)\n", + " ) # one-hot encode the names\n", + " xenc = xenc.view(d_size, -1)\n", + " logits = xenc @ W # logits, different word for log-counts\n", + " counts = logits.exp() # 'fake counts', kinda like in the N matrix of bigram\n", + " probs = counts / counts.sum(\n", + " 1, keepdims=True\n", + " ) # Normal distribution probabilities (this is y_pred)\n", + " loss = (\n", + " -probs[torch.arange(d_size), ys_tri_valid].log().mean() + 0.01 * (W**2).mean()\n", + " )\n", + "print(f\"Validation Loss: {loss}\")\n", + "\n", + "# Test Loss\n", + "d_size = xs_tri_test.shape[0]\n", + "with torch.no_grad():\n", + " xenc = (\n", + " F.one_hot(xs_tri_test, num_classes=27).float().to(device)\n", + " ) # one-hot encode the names\n", + " xenc = xenc.view(d_size, -1)\n", + " logits = xenc @ W # logits, different word for log-counts\n", + " counts = logits.exp() # 'fake counts', kinda like in the N matrix of bigram\n", + " probs = counts / counts.sum(\n", + " 1, keepdims=True\n", + " ) # Normal distribution probabilities (this is y_pred)\n", + " loss = -probs[torch.arange(d_size), ys_tri_test].log().mean() + 0.01 * (W**2).mean()\n", + "print(f\"Test Loss:\\t {loss}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Trigram Generalization Analysis\n", + "\n", + "**Results Summary**:\n", + "- Both validation and test losses are slightly higher than the training loss, which aligns with our hypothesis\n", + "- However, the difference is smaller than we might have expected given the significant increase in model complexity\n", + "\n", + "**Interpretation**:\n", + "1. **Confirmation of complexity theory**: The increased complexity does lead to some generalization gap, as predicted\n", + "2. **Surprisingly good generalization**: Despite having 27x more possible combinations to learn, the gap is quite small\n", + "3. **Value of context**: The additional context captured by trigrams appears to provide genuinely useful information for prediction\n", + "4. **Dataset characteristics**: The names dataset likely contains strong trigram patterns that are consistent across the data splits\n", + "\n", + "**Key insight**: The improved performance of the trigram model (lower overall loss compared to the bigram model) combined with its good generalization suggests that the additional complexity is justified for this task. The benefit of modeling longer contextual dependencies outweighs the increased risk of overfitting." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create set of all *trigrams*\n", + "xs, ys = [], []\n", + "\n", + "for w in words:\n", + " chs = [\".\"] + list(w) + [\".\"]\n", + " for ch1, ch2, ch3 in zip(chs, chs[1:], chs[2:]):\n", + " xs.append([stoi[ch1], stoi[ch2]])\n", + " ys.append(stoi[ch3])\n", + "\n", + "xs, ys = torch.tensor(xs), torch.tensor(ys) # [196113, 2], [196113]\n", + "num_x, num_y = xs.nelement() // 2, ys.nelement()\n", + "\n", + "# Shuffle/Permute the dataset, keeping (x,y) pairs in sync\n", + "perm = torch.randperm(num_x)\n", + "xs, ys = xs[perm, :], ys[perm] # xs are shuffled along the zeroth dimension\n", + "\n", + "# Split 80:10:10 for train:valid:test\n", + "xs_tri_train, xs_tri_valid, xs_tri_test = (\n", + " xs[: int(num_x * 0.8), :],\n", + " xs[int(num_x * 0.8) : int(num_x * 0.9), :],\n", + " xs[int(num_x * 0.9) :, :],\n", + ")\n", + "ys_tri_train, ys_tri_valid, ys_tri_test = (\n", + " ys[: int(num_x * 0.8)],\n", + " ys[int(num_x * 0.8) : int(num_x * 0.9)],\n", + " ys[int(num_x * 0.9) :],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Hyperparameter Tuning: Regularization Strength\n", + "\n", + "Now that we've established the basic performance of our trigram model, let's explore how regularization affects its generalization.\n", + "\n", + "**Regularization** adds a penalty to the loss function for large weight values, which can help prevent overfitting. The strength of this penalty is a hyperparameter we can tune.\n", + "\n", + "**Experimental setup**:\n", + "- We'll sweep the regularization strength from $0.0$ (no regularization) to $1.0$ (strong regularization)\n", + "- We'll use 25 evenly spaced values across this range for thorough coverage\n", + "- For each strength value, we'll:\n", + " 1. Train a complete trigram model from scratch\n", + " 2. Evaluate it on all three data splits (train, validation, test)\n", + " 3. Record the losses for later analysis\n", + "\n", + "**Selection process**:\n", + "- We'll visualize all losses to understand the relationship between regularization and generalization\n", + "- The optimal strength will be selected based on the validation loss (not the test loss)\n", + "- This mimics real-world scenarios where the test set remains untouched until final evaluation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# from 0.0 to 1.0 in 25 steps\n", + "strengths = torch.linspace(0.0, 1.0, 25, device=device)\n", + "losst, lossv, lossf = [], [], []\n", + "\n", + "for strength in strengths:\n", + " W = torch.randn(\n", + " (27 + 27, 27), device=device, generator=g, requires_grad=True\n", + " ) # random column tensor of (27+27)x27 numbers (requires_grad=True for autograd)\n", + "\n", + " # Training cycles, using the entire dataset -> 200 Epochs, like the bigram model\n", + " d_size = xs_tri_train.shape[0]\n", + " for k in range(200):\n", + " # Forward pass\n", + " xenc = (\n", + " F.one_hot(xs_tri_train, num_classes=27).float().to(device)\n", + " ) # One-hot encoding, [196113, 2, 27]\n", + " xenc = xenc.view(d_size, -1) # concatenate the one-hot vectors, [196113, 54]\n", + " logits = xenc @ W # logits, different word for log-counts\n", + " counts = logits.exp() # 'fake counts', kinda like in the N matrix of bigram\n", + " probs = counts / counts.sum(\n", + " 1, keepdims=True\n", + " ) # Normal distribution probabilities (this is y_pred)\n", + " loss_t = (\n", + " -probs[torch.arange(d_size), ys_tri_train].log().mean()\n", + " + strength * (W**2).mean()\n", + " )\n", + "\n", + " # Backward pass\n", + " W.grad = None # Make sure all gradients are reset\n", + " loss_t.backward() # Torch kept track of what this variable is, kinda cool\n", + "\n", + " # Weight update\n", + " W.data += -50 * W.grad\n", + "\n", + " # Validation Loss\n", + " d_size = xs_tri_valid.shape[0]\n", + " with torch.no_grad():\n", + " xenc = (\n", + " F.one_hot(xs_tri_valid, num_classes=27).float().to(device)\n", + " ) # one-hot encode the names\n", + " xenc = xenc.view(d_size, -1)\n", + " logits = xenc @ W # logits, different word for log-counts\n", + " counts = logits.exp() # 'fake counts', kinda like in the N matrix of bigram\n", + " probs = counts / counts.sum(\n", + " 1, keepdims=True\n", + " ) # Normal distribution probabilities (this is y_pred)\n", + " loss_v = (\n", + " -probs[torch.arange(d_size), ys_tri_valid].log().mean()\n", + " + strength * (W**2).mean()\n", + " )\n", + "\n", + " # Test Loss\n", + " d_size = xs_tri_test.shape[0]\n", + " with torch.no_grad():\n", + " xenc = (\n", + " F.one_hot(xs_tri_test, num_classes=27).float().to(device)\n", + " ) # one-hot encode the names\n", + " xenc = xenc.view(d_size, -1)\n", + " logits = xenc @ W # logits, different word for log-counts\n", + " counts = (\n", + " logits.exp()\n", + " ) # 'fake counts' as we did for the N matrix of the Bigram model\n", + " probs = counts / counts.sum(\n", + " 1, keepdims=True\n", + " ) # Normal distribution probabilities (this is y_pred)\n", + " loss_f = (\n", + " -probs[torch.arange(d_size), ys_tri_test].log().mean()\n", + " + strength * (W**2).mean()\n", + " )\n", + "\n", + " # Note the losses for this strength\n", + " losst.append((strength, loss_t))\n", + " lossv.append((strength, loss_v))\n", + " lossf.append((strength, loss_f))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Plot the losses\n", + "plt.figure(figsize=(16, 8))\n", + "plt.plot(\n", + " [y.item() for (_, y) in losst],\n", + " label=\"Train Loss\",\n", + " linestyle=\"-\",\n", + " marker=\"o\",\n", + " color=\"green\",\n", + ")\n", + "plt.plot(\n", + " [y.item() for (_, y) in lossv],\n", + " label=\"Validation Loss\",\n", + " linestyle=\"-\",\n", + " marker=\"o\",\n", + " color=\"blue\",\n", + ")\n", + "plt.plot(\n", + " [y.item() for (_, y) in lossf],\n", + " label=\"Test Loss\",\n", + " linestyle=\"-\",\n", + " marker=\"o\",\n", + " color=\"red\",\n", + ")\n", + "plt.xlabel(\"Step\")\n", + "plt.ylabel(\"Loss\")\n", + "plt.title(\"Loss vs. Strength\")\n", + "plt.legend()\n", + "plt.show()\n", + "\n", + "# Report the best strength\n", + "print(\n", + " f\"Best Strength: {min(lossv, key=lambda x: x[1])[0]} @ Train: {min(losst, key=lambda x: x[1])[1]}, Validation: {min(lossv, key=lambda x: x[1])[1]} & Test: {min(lossf, key=lambda x: x[1])[1]}\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Analyzing Regularization Effects\n", + "\n", + "The results from our regularization experiments reveal several important insights:\n", + "\n", + "**Observed patterns**:\n", + "- **Training loss**: Increases steadily with regularization strength in a logarithmic-like curve\n", + "- **Validation loss**: Follows the training loss curve closely, also increasing with regularization strength\n", + "- **Test loss**: Generally tracks with validation loss, with slightly sharper increases at lower regularization values\n", + "- **Generalization gap**: The gap between training and test loss is largest at low regularization strengths\n", + "\n", + "**Understanding regularization mechanics**:\n", + "- Regularization works by penalizing large weight values in the model\n", + "- As regularization strength increases, the model is forced to use smaller weights\n", + "- In our case, this constraint appears to limit the model's ability to capture important patterns\n", + "- The result is higher loss across all data splits as regularization increases\n", + "\n", + "**Counterintuitive finding**:\n", + "\n", + "While regularization typically helps prevent overfitting, in this particular case:\n", + "- The dataset is relatively small and structured\n", + "- The trigram patterns are consistent and meaningful\n", + "- The model complexity, while higher than bigrams, is still manageable for this data\n", + "\n", + "**Practical conclusion**:\n", + "- For this specific language modeling task, minimal or no regularization produces the best results\n", + "- This demonstrates how the ideal regularization strategy depends on the specific characteristics of the dataset and model\n", + "- In larger, more complex models or noisier datasets, we might see more benefit from stronger regularization" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "W = torch.randn(\n", + " (27 + 27, 27), device=device, generator=g, requires_grad=True\n", + ") # random column tensor of (27+27)x27 numbers (requires_grad=True for autograd)\n", + "\n", + "# Training cycles, using the entire dataset -> 200 Epochs, like the bigram model\n", + "d_size = xs_tri_train.shape[0]\n", + "for k in range(200):\n", + " # Forward pass\n", + " logits = (\n", + " W[xs_tri_train[:, 0]] + W[27 + xs_tri_train[:, 1]]\n", + " ) # logits, different word for log-counts\n", + " counts = logits.exp() # 'fake counts', kinda like in the N matrix of bigram\n", + " probs = counts / counts.sum(\n", + " 1, keepdims=True\n", + " ) # Normal distribution probabilities (this is y_pred)\n", + " loss = (\n", + " -probs[torch.arange(d_size), ys_tri_train].log().mean() + 0.01 * (W**2).mean()\n", + " )\n", + " print(f\"Loss @ iteration {k + 1}: {loss}\")\n", + "\n", + " # Backward pass\n", + " W.grad = None # Make sure all gradients are reset\n", + " loss.backward() # Torch kept track of what this variable is, kinda cool\n", + "\n", + " # Weight update\n", + " W.data += -50 * W.grad" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Computational Optimization: Direct Embedding Lookup\n", + "\n", + "**Understanding the Original Approach**\n", + "\n", + "The core idea of our original trigram model was:\n", + "```python\n", + "xenc = F.one_hot(xs_tri_train, num_classes=27).float().to(device) # One-hot encoding, [196113, 2, 27]\n", + "xenc = xenc.view(d_size, -1) # concatenate the one-hot vectors, [196113, 54]\n", + "logits = xenc @ W\n", + "```\n", + "\n", + "This implementation:\n", + "1. Converts each character to a one-hot vector (27 dimensions)\n", + "2. Concatenates two one-hot vectors to form a 54-dimensional input vector\n", + "3. Multiplies this with weight matrix `W` of shape $54 \\times 27$\n", + "\n", + "The weight matrix structure is significant:\n", + "- First 27 rows correspond to weights for the first character\n", + "- Next 27 rows correspond to weights for the second character\n", + "- This allows the model to learn different weights for each character position\n", + "\n", + "**The Optimized Implementation**\n", + "\n", + "We can achieve the same mathematical result more efficiently:\n", + "```python\n", + "logits = W[xs_tri_train[:,0]] + W[27 + xs_tri_train[:,1]]\n", + "```\n", + "\n", + "**How and why this works**:\n", + "1. **Matrix multiplication with one-hot vectors is equivalent to lookup**: When you multiply a one-hot vector by a matrix, you're essentially selecting a specific row of that matrix\n", + "2. **Direct indexing**: Instead of creating one-hot vectors and performing matrix multiplication, we directly index into the rows of `W` using character indices\n", + "3. **Position encoding**: For the second character, we add 27 to the index to access the second half of the weight matrix\n", + "4. **Addition combines influences**: The sum combines the influence of both characters on predicting the next character\n", + "\n", + "**Benefits**:\n", + "- **Computational efficiency**: Eliminates the need to create and manipulate large one-hot vectors\n", + "- **Memory efficiency**: Reduces memory usage during forward pass\n", + "- **Mathematical equivalence**: Produces exactly the same results as the original approach\n", + "\n", + "This optimization illustrates an important principle in deep learning: understanding the mathematical equivalence between operations allows us to implement more efficient solutions without changing the underlying model." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Change the loss function" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In neural networks, the choice of loss function is crucial for effective training. So far, we've been implementing the negative log-likelihood loss manually. However, PyTorch provides optimized implementations of common loss functions.\n", + "\n", + "In this exercise, we will:\n", + "1. Replace our manual negative log-likelihood implementation with PyTorch's built-in `F.cross_entropy`\n", + "2. Compare the results to verify mathematical equivalence\n", + "3. Analyze the advantages of using the built-in function\n", + "\n", + "**Key Questions:**\n", + "- Does `F.cross_entropy` produce the same results as our manual implementation?\n", + "- What are the technical advantages of using the built-in function?\n", + "- Are there any performance benefits to this approach?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Using PyTorch's Cross Entropy Loss\n", + "\n", + "PyTorch's `F.cross_entropy` ([docs](https://docs.pytorch.org/docs/main/generated/torch.nn.functional.cross_entropy.html)) function combines several operations in one efficient call:\n", + "\n", + "1. It applies a softmax function to convert logits to probabilities\n", + "2. It then computes the negative log-likelihood of the correct class\n", + "3. It averages the loss across all examples in the batch\n", + "\n", + "**Implementation Note:** The function expects:\n", + "- First argument: raw logits (unnormalized scores) from the model\n", + "- Second argument: target class indices (not one-hot encoded)\n", + "\n", + "Let's implement our trigram model using this function:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "W = torch.randn(\n", + " (27 + 27, 27), device=device, generator=g, requires_grad=True\n", + ") # random column tensor of (27+27)x27 numbers (requires_grad=True for autograd)\n", + "\n", + "# Training cycles, using the entire dataset -> 200 Epochs, like the bigram model\n", + "d_size = xs_tri_train.shape[0]\n", + "for k in range(200):\n", + " # Forward pass\n", + " logits = (\n", + " W[xs_tri_train[:, 0]] + W[27 + xs_tri_train[:, 1]]\n", + " ) # logits, different word for log-counts\n", + " loss = F.cross_entropy(logits, ys_tri_train) + 0.01 * (W**2).mean()\n", + " print(f\"Loss @ iteration {k + 1}: {loss}\")\n", + "\n", + " # Backward pass\n", + " W.grad = None # Make sure all gradients are reset\n", + " loss.backward() # Torch kept track of what this variable is, kinda cool\n", + "\n", + " # Weight update\n", + " W.data += -50 * W.grad" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Advantages of Using `F.cross_entropy`\n", + "\n", + "The final loss achieved is equivalent to our manual implementation, but using `F.cross_entropy` offers several important advantages:\n", + "\n", + "**1. Code Simplicity and Readability**\n", + "- Replaces multiple lines of complex operations with a single function call\n", + "- Makes the code easier to read, maintain, and debug\n", + "- Clarifies the intent of the computation\n", + "\n", + "**2. Numerical Stability**\n", + "- Our manual implementation used these steps:\n", + "```python\n", + "counts = logits.exp() # Convert logits to unnormalized probabilities\n", + "probs = counts / counts.sum(1, keepdims=True) # Normalize to get probabilities\n", + "loss = -probs[torch.arange(d_size), ys_tri_train].log().mean() + 0.01 * (W**2).mean()\n", + "```\n", + "- This approach can cause numerical issues:\n", + " - The `exp()` operation can easily overflow for large logit values\n", + " - Taking the logarithm of very small probabilities can lead to underflow\n", + "\n", + "**3. Computational Efficiency**\n", + "\n", + "`F.cross_entropy` uses a mathematically equivalent but more stable approach:\n", + "- Applies log-softmax operation that combines softmax and log in a single step\n", + "- Computes operations in log-space to avoid overflow/underflow\n", + "- Implements optimized CUDA kernels for faster computation on GPUs\n", + "\n", + "**4. Memory Efficiency**\n", + "- Avoids creating intermediate tensors for probabilities\n", + "- Reduces memory usage during the forward and backward passes\n", + "\n", + "These advantages make `F.cross_entropy` the preferred choice in production machine learning code, ensuring training is faster, more stable, and less prone to numerical errors." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Random column tensor of (27+27)x27 numbers (requires_grad=True for autograd)\n", + "W = torch.randn(\n", + " (27, 27), device=device, generator=g, requires_grad=True\n", + ")\n", + "\n", + "# Training cycles, using the entire dataset for 200 Epochs\n", + "d_size = xs_tri_train.shape[0]\n", + "for k in range(200):\n", + " # Forward pass\n", + " logits = (\n", + " W[xs_tri_train[:, 0]] + W[xs_tri_train[:, 1]]\n", + " ) # logits, different word for log-counts\n", + " loss = F.cross_entropy(logits, ys_tri_train) + 0.01 * (W**2).mean()\n", + " print(f\"Loss @ iteration {k + 1}: {loss}\")\n", + "\n", + " # Backward pass\n", + " W.grad = None # Make sure all gradients are reset\n", + " loss.backward() # Torch kept track of what this variable is, kinda cool\n", + "\n", + " # Weight update\n", + " W.data += -50 * W.grad" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Understanding Model Architecture Importance\n", + "\n", + "The results from this experiment are clear, and they are **not good**:\n", + "\n", + "- The training loss is significantly higher than our original trigram model\n", + "- Training behavior has become erratic and unstable\n", + "- The model fails to learn effective representations\n", + "\n", + "**What went wrong?**\n", + "\n", + "In this final experiment, we modified the architecture of our model by changing the weight matrix dimensions from $(27+27) \\times 27$ to $27 \\times 27$. This seemingly small change had dramatic consequences:\n", + "\n", + "1. **Loss of position information**: By using the same weights for both character positions, we've eliminated the model's ability to learn position-specific representations\n", + "\n", + "2. **Reduced modeling capacity**: The number of parameters was reduced from 1,458 to 729, cutting the model's capacity in half\n", + "\n", + "3. **Parameter interference**: Updates to weights for one position now affect predictions for the other position, creating destructive interference\n", + "\n", + "**Key insight**: This experiment demonstrates that the proper architecture design is crucial for model performance. In language modeling, preserving position information through separate parameters for each position is essential for effective learning.\n", + "\n", + "This reinforces a fundamental principle in neural network design: the architecture should reflect the structure of the problem. For sequence modeling tasks like ours, position-specific parameters are vital for capturing the sequential nature of language." + ] + } + ], + "metadata": { + "jupytext": { + "formats": "ipynb,py:percent" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.10" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/pyproject.toml b/pyproject.toml index f7e54a65..87d150f8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,6 +41,7 @@ select = [ [tool.ruff.lint.per-file-ignores] # Trailing whitespace in comment "binder/ipython_config.py" = ["E266"] + # suppress `raise ... from err` # Why we ignore B904 from the object-oriented tests? # We do want to raise an assertion error if the check on the solution function attributes fails, @@ -48,6 +49,9 @@ select = [ # if the result is not a class and therefore doesn't have a __dict__ attribute. "tutorial/tests/test_object_oriented_programming.py" = ["B904"] +# Ignore invalid names like `import torch.nn.functional as F` +"25_library_pytorch_language_modeling.ipynb" = ["N812"] + # Ruff formatting [tool.ruff.format] quote-style = "double"