/**
 * Author: Sergey Kopeliovich (Burunduk30@gmail.com)
 * Date: 2013.10.31
 */

import java.util.*;
import java.io.*;

public class mul_sk_n2 {
	BufferedReader in;
	PrintWriter out;

	char[] s, t;
	int[] res, a;

	public void mul( int k, int[] res, int rp, int sp, int tp, int ap ) {
		if (k == 1) {
			res[rp + 0] = sp < s.length && tp < t.length ? (s[sp] - '0') * (t[tp] - '0') : 0;
			res[rp + 1] = 0;
			return;
		}
		int k1 = k / 2;
		mul(k1, res, rp, sp, tp, ap);
		mul(k1, res, rp + k, sp + k1, tp + k1, ap);

		for (int t = 0; t < 2; t++) {
			mul(k1, a, ap, sp + (t == 0 ? k1 : 0), tp + (t == 1 ? k1 : 0), ap + k);
			for (int i = 0; i < k; i++) {
				res[rp + k1 + i] += a[ap + i];
			}
		}
	}

	public void out( int[] a ) {
		int i = a.length - 1;
		while (i > 0 && a[i] == 0) {
			i--;
		}
		while (i >= 0) {
			System.out.print(a[i--]);
		}
	}

	public char[] read() throws IOException {
		char[] s = in.readLine().toCharArray();
		for (int i = 0, n = s.length; 2 * i < n; i++) {
			char tmp = s[i];
			s[i] = s[n - i - 1];
			s[n - i - 1] = tmp;
		}
		return s;
	}
	public void run() throws IOException {
		in = new BufferedReader(new InputStreamReader(System.in));
		out = new PrintWriter(System.out);

		s = read();
		t = read();

		int k = 1;
		while (k < Math.max(s.length, t.length)) {
			k <<= 1;
		}

		res = new int[k * 2];
		a = new int[k * 2];
		mul(k, res, 0, 0, 0, 0);
		for (int i = 0; i + 1 < k * 2; i++) {
			res[i + 1] += res[i] / 10;
			res[i] %= 10;
		}
		out(res);

		out.close();
	}

	static public void main(String[] args) throws Exception {
		new mul_sk_n2().run();
	}
}