from itertools import permutations

import sys



sys.setrecursionlimit(10 ** 6)

from bisect import *

from collections import *

from heapq import *



def II(): return int(sys.stdin.readline())

def MI(): return map(int, sys.stdin.readline().split())

def LI(): return list(map(int, sys.stdin.readline().split()))

def SI(): return sys.stdin.readline()[:-1]

def LLI(rows_number): return [LI() for _ in range(rows_number)]

int1 = lambda x: int(x) - 1

def MI1(): return map(int1, sys.stdin.readline().split())

def LI1(): return list(map(int1, sys.stdin.readline().split()))

p2D = lambda x: print(*x, sep="\n")

dij = [(1, 0), (0, 1), (-1, 0), (0, -1)]



def main():

    n,k=MI()

    ans=k*pow(k-1,n-1)

    print(ans)



main()

import sys



sys.setrecursionlimit(10 ** 6)

int1 = lambda x: int(x) - 1

p2D = lambda x: print(*x, sep="\n")

def II(): return int(sys.stdin.readline())

def MI(): return map(int, sys.stdin.readline().split())

def LI(): return list(map(int, sys.stdin.readline().split()))

def LLI(rows_number): return [LI() for _ in range(rows_number)]

def SI(): return sys.stdin.readline()[:-1]



def main():

    n,k=MI()

    print(pow(k-1,n-1)*k)



main()

from itertools import permutations
import sys

sys.setrecursionlimit(10**6)
from bisect import *
from collections import *
from heapq import *


def II():
    return int(sys.stdin.readline())


def MI():
    return map(int, sys.stdin.readline().split())


def LI():
    return list(map(int, sys.stdin.readline().split()))


def SI():
    return sys.stdin.readline()[:-1]


def LLI(rows_number):
    return [LI() for _ in range(rows_number)]


int1 = lambda x: int(x) - 1


def MI1():
    return map(int1, sys.stdin.readline().split())


def LI1():
    return list(map(int1, sys.stdin.readline().split()))


p2D = lambda x: print(*x, sep="\n")
dij = [(1, 0), (0, 1), (-1, 0), (0, -1)]


def main():
    n, k = MI()
    ans = k * pow(k - 1, n - 1)
    print(ans)


main()

import sys

sys.setrecursionlimit(10**6)
int1 = lambda x: int(x) - 1
p2D = lambda x: print(*x, sep="\n")


def II():
    return int(sys.stdin.readline())


def MI():
    return map(int, sys.stdin.readline().split())


def LI():
    return list(map(int, sys.stdin.readline().split()))


def LLI(rows_number):
    return [LI() for _ in range(rows_number)]


def SI():
    return sys.stdin.readline()[:-1]


def main():
    n, k = MI()
    print(pow(k - 1, n - 1) * k)


main()

-from itertools import permutations -from bisect import * -from collections import * -from heapq import * +int1 = lambda x: int(x) - 1 +p2D = lambda x: print(*x, sep="\n") +def LLI(rows_number): +    return [LI() for _ in range(rows_number)] + + -def LLI(rows_number): -    return [LI() for _ in range(rows_number)] - - -int1 = lambda x: int(x) - 1 - - -def MI1(): -    return map(int1, sys.stdin.readline().split()) - - -def LI1(): -    return list(map(int1, sys.stdin.readline().split())) - - -p2D = lambda x: print(*x, sep="\n") -dij = [(1, 0), (0, 1), (-1, 0), (0, -1)] - - -    ans = k * pow(k - 1, n - 1) -    print(ans) +    print(pow(k - 1, n - 1) * k)