#include <bits/stdc++.h>
using namespace std;

const int MOD = 1e9 + 7;

int cnt[10];
long long Comb[110][110];
int dp[11][110][11];
int sum[11];

int main()
{
	ios::sync_with_stdio(false);
	for (int i = 0; i <= 100; i++) {
		Comb[i][0] = Comb[i][i] = 1;
		for (int j = 1; j < i; j++) {
			Comb[i][j] = (Comb[i - 1][j] + Comb[i - 1][j - 1]) % MOD;
		}
	}
	string str;
	while (cin >> str) {
		int len = str.length();
		memset(cnt, 0, sizeof(cnt));
		for (int i = 0; i < len; i++) {
			cnt[str[i] - '0']++;
		}
		sum[0] = cnt[0];
		for (int i = 1; i < 10; i++) sum[i] = sum[i - 1] + cnt[i];
		memset(dp, 0, sizeof(dp));
		int n = (len + 1) / 2, m = len / 2;
		for (int i = 0; i <= cnt[0]; i++) {
			int delta = len / 2;
			dp[0][i][0] = Comb[delta][i] * Comb[m - (len % 2 == 0)][cnt[0] - i] % MOD;
		}
		for (int i = 1; i < 10; i++) {
			for (int j = 0; j <= n; j++) {
				for (int k = 0; k < 11; k++) {
					for (int t = 0; t <= cnt[i]; t++) {
						if (j + t > n) continue;
						long long delta = Comb[n - j][t] * Comb[m - (sum[i - 1] - j)][cnt[i] - t] % MOD;
						int s = ((k + (t - (cnt[i] - t)) * i) % 11 + 11) % 11;
						dp[i][j + t][s] = (dp[i][j + t][s] + delta * dp[i - 1][j][k] % MOD) % MOD;
					}
				}
			}
		}
		cout << dp[9][n][0] << '\n';
	}
	return 0;
}