vb .net перестановка строк. перестановка или комбинация?

у меня есть ряд строк, как этоC - F - A - M, я хочу создать комбинацию из этого с условием:

каждый элемент рядом с последним символом должен сочетаться с последним символом

не допускается одна и та же комбинация, даже порядок отличается. например

ФК - М

CF - M

если строковый массив содержит> = 3 элемента, он сгенерирует 2 & 3 itemset, если 2 элемента, то он сгенерирует только 2 itemset

ниже мой код мой код генерирует результат как правую часть изображения

мой вопрос, какой метод я должен использовать? это перестановка, комбинация или другие вещи? и в псевдокоде, на что будет похож мой случай?

вот мой код

Public Class permute
Dim ItemUsed() As Boolean
Dim pno As Long, pString As String
Dim inChars() As Char = {"c", "f", "a", "m"}

Private Sub permute_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load  
End Sub

Sub Permute(ByVal K As Long)
    ReDim ItemUsed(K)
    pno = 0

    Dim i As Integer
    For i = 2 To K
        Permutate(i, 1)
        tb.Text = K
    Next
End Sub

Private Sub Permutate(ByVal K As Long, ByVal pLevel As Long)
    Dim i As Long, Perm As String
    Perm = pString

    For i = 0 To K - 1
        If Not ItemUsed(i) Then
            If pLevel = 1 Then
                pString = inChars(i)
            Else
                pString += inChars(i)
            End If
            If pLevel = K Then
                pno = pno + 1
                Results.Text += _
                pno & " " & " = " & " " & pString & vbCrLf
                Exit Sub
            End If

            ItemUsed(i) = True
            Permutate(K, pLevel + 1)
            ItemUsed(i) = False
            pString = Perm
        End If
    Next
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Permute(tb.Text)
End Sub

Private Sub tb_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tb.TextChanged
    If tb.Text = "" Then
        Results.Text = ""
    Else
        Permute(tb.Text)
    End If
End Sub
End Class

вот скриншот с требованием

и вот скриншот программы

Ответы на вопрос(2)

Ваш ответ на вопрос