import sys
input = sys.stdin.readline

n = int(input())
k = int(input())

cards = [input().rstrip() for _ in range(n)]

dp = [0] * n
res = set()
curStr = ""

def concat(cards, k, n, count):
    print(dp)
    print(curStr)

    if (count == k):
        res.add(curStr)
        return
   
    for i in range(n):
        if dp[i] == 0:
            curStr += cards[i]
            dp[i] = 1
       
            concat(cards,  k, n , count + 1)

            dp[i] = 0
            curStr = curStr[:-len(cards[i])]  
concat(cards, k, n, 0)
print(len(res))
       



백준 카드놓기 https://www.acmicpc.net/problem/5568

푼 코드인데, 전역변수인 dp 배열과 이어붙이고 있는 문자 보여주는 curStr 문자열 두개에 대해서 

함수내에서 global을 쓰지 않아도 dp배열에는 접근이 가능한데, curStr에는 접근이 불가능함

이 코드 디버깅해보면 

def concat(cards, k, n, count):
    print(dp)
    print(curStr)

여기서 print(dp)까지는 되는데

print(curStr)에서 
UnboundLocalError: cannot access local variable 'curStr' where it is not associated with a value
이 에러가 뜸, 둘다 함수 내에서 global 키워드 사용하지 않았는데 하나는 쓸 수 있고 하나는 쓸 수 없는 이유가 뭐임??